Il match del secolo condominiale, terza del match, GM Faraoncic accorcia le distanze

[Site “Chess.com”]
[Round “3”]
[White “enricof8”]
[Black “homunculus1”]
[Result “1-0”]
[ECO “B03”]
[WhiteElo “1816”]
[BlackElo “1814”]
[EndDate “2019.01.17”]

All’ indirizzo https://www.chess.com/daily/game/215826638 troviamo la visualizzazione dinamica dlela terza del match, con il bianco frastornato per gli schiaffi presi nella prima e seconda partita del match che é stato ribattezzato dalla stampa specializzata: del secolo condominiale. Dopo aver perso due punti con un sunto all’ indirizzo https://umbriawaypotenzia.wordpress.com/2019/01/20/seconda-del-match-mondiale-condominiale-vs-homunculus1-dopo-io-pensa-ma-qui-posizio-persa-micko-philidor-defence/ , dove nella seconda il nero non ha proprio giocato, il bianco realizza in questa partita che il GM che ha di fronte non va sottovalutato e che per vincere contro l’Alekine bisogna giocare qualche linea migliore che non sia alla seconda mossa 2 d4 come nella partita d’esordio, come dire anche gli scarsono devono correggere il tiro quando non ottengono risultati. Ecco spiegato il perché del punto esclamativo alla seconda mossa.

1.e4 Nf6 2.e5! Nd5 3.d4 Nb6 4.f4 d6 5.Nf3 dxe5 6.fxe5 Bg4 7.Be2 e6 8.O-O Be7 9.Nc3!? NT

Il problema del bianco in questa variante é che deve puntellare d4 e la mossa di cavallo non smuove un dito a favore di tale causa, indi per cui su questa linea il pedone d4 deve essere sacrificato. Chessbase riporta 9 c3

9..Nc6 10.Be3 O-O 11.Qe1? (+0.91 → +0.17)

meglio 11 Af2 a cui potrebbe seguire 11..De8, il sacrificio di pedone bluff inventato dal bianco a gioco corretto non dovrebbe produrre nulla

11…Bxf3! 12.Bxf3 Nxd4 13.Rd1 Nxf3+ 14.Rxf3 Qe8 15.Ne4?

puntando un occhio sulla casa f6, ma 15 Dg3 Rh8 16 Dg4 idea Tg3 potrebbe essere una interessante linea di sviluppo

15..Kh8?

mancando la non facile 15..Da4 che dovrebbe togliere a gioco corretto ogni speranza al bianco

16.Qg3?

andava giocato 16 b3 idea c4 dopo un presumile cambio di torri sulla colonna “d” e il vantaggio del nero é minimo

16..f5? (-1.24 → +1.17)

Blunder. The best move was 16… ♕a4! 17.Nc3 Qxc2 18.Rd2 Qg6 con posizione senza speranza per il bianco

17.exf6 adesso il vantaggio del bianco é stato ripristinato ma servirebbe un’ altra piccola imprecisione
17..gxf6 18.Rdf1!?

18 Dc7 e 18 Ad4 sono da considerare

18..Nd5 19.Bd4

19..e5? 20.Bxe5! fxe5 21.Qxe5+ Nf6

21..Af6 22 Dd5 Td8 23 Dc4 é senza speranza per il nero a gioco corretto

22.Qc3! +-

una bella mossa di attesa che intende riprendersi il maltolto solo nelle condizioni più favorevoli, adesso il bianco gioca per vincere

22..Qg6

22..Db5 idea 23 Cf6 Dc5+ é da considerare

23.Nxf6 Bxf6 24.Rxf6 Rxf6 25.Rxf6 Qg7 26.Rf3 Rd8 27.Qxg7+ Kxg7 28.Rd3

28..Rxd3?!

accellera la fine anche se l’alternativa Tc8 é spiacevole e a gioco corretto non dovrebbe salvare ma questo é il punto, a gioco corretto!

29.cxd3 +-

il finale di soli pedoni sembra perso per il nero adesso c’è solo da capire se il bianco deve spingere i suoi pedoni ad est per attirare l’attenzione del re in quel settore e scivolare sull’ ala di donna al momento opportuno oppure se riuscire nella strategia contraria, invogliare il re nero ad andare ad ovest visto che il pedone in più sul lato opposto assicura la promozione in maniera rapida e indolore

29..Kf6 30.Kf2 Ke5 31.Ke3 c5 32.g4 Kd5 33.a4 b6 34.h4 Ke5 35.Kf3

dovrebbe essere vinta anche dopo 35 h5, forse addirittura più marcata

35..Kd4 36.g5 Kxd3 ?!

36… ♔e5 é relativamente migliore per 37.Kg4 Ke6 38.Kf4 a6 39.Ke4 b5 40.a5 b4 41.h5

37.h5 Kc2 38.g6 hxg6 39.hxg6 Kxb2 40.g7 c4 41.g8=Q c3 42.Qg7

42 Dc4 é ancora meglio secondo le macchine 42…c2 43.Qb4+ Ka2 44.Qc3

42…a6 43.Ke3 b5 44.axb5

o anche 44.Kd3 b4 45.Qg2+ c2 46.Qxc2+ Ka1 47.Qc1+ Ka2 48.Kc2 b3+ 49.Kc3 b2 50.Qxb2#

44…axb5 45.Kd3 idea Dg2+ 1-0

il bianco é riuscito ad accorciare le distanze, adesso il match si porta sul 2 a 1 per il GM homunculus1 ma lasciamo intravvedere il punto di vista del GM avversario:

A – 9) Cc3… Le mie fonti danno come preferibile 9)c3

B – Su 15)….Da4 temevo 16)Ag5

C – 16)…Da4 non mi convinceva troppo….il bianco può giocare 17)Cg5 che è fastidiosa ma anche 17)Cc3!? Dc2 18)Tdf1 Dg6 19)Dg6 fg6 20)Tf8 Tf8 21) Tf8 Af8 19)Cb5 poco chiaro….

D – 16)….f5 brutta mossa! Apre il gioco a favore del bianco! Avevo pensato anche a 16)….Tad8 17)Tdf1 Cd5 18)Ag5 b5 19)Dh4 con enorme compenso per il bianco!

E – 26)Tf3….. Mi aspettavo 26)Df3….

F – 35)Rf3…..qui probabilmente si vince con quasi tutte le mosse ma secondo me è più precisa 35)h5….

Trattamento evans del gambetto di re, miglioriamo il gioco del bianco

[Site “Chess.com”]
[White “enricof8”]
[Black “mlamdmar”]
[Result “0-1”]
[ECO “C30”]
[WhiteElo “1832”]
[BlackElo “1391”]
[EndDate “2019.01.13”]

1.e4 e5 2.f4 Bc5 3.Nf3 d6 4.b4?!

(+0.22 → -0.90) Inaccuracy. A better move was 4. c3 Bg4 5.d4 Bxf3 6.gxf3 Qh4+ 7.Ke2 Bb6 8.a4!? NT a5 gioco pari ma anche 8..Cc6 9 a5 Axd4 10 cd4 Cd4 11 Rd3 con posizione giocabile per entrambi. Lo schema scelto dal bianco ricorda un pò la tattica del gambetto evans.

4…Bxb4!

il miglior modo per confutare un gambetto é accettarlo. Le macchine indicano questa mossa come inaccurata, con la partita che rientra su binari aperti per entrambi, 4..Ab6 dovrebbe dare un vantaggio netto, ma di fatto é il bianco che deve dimostrare qualcosa con il pedone in meno: -1.12 → -0.42 , a better move was 4…Bb6 5.Na3 Nf6 6.Nc4 Nc6 7.d3 Nxb4 8.Qd2 Nc6 9.fxe5

5.c3 Ba5 6.fxe5 dxe5 7.Bc4 Nc6 8.O-O Nf6 9.Ba3 Bg4! NT

chiaro vantaggio del nero e anche la mossa più forte secondo le macchine, chessbase riporta 9..Ab6+ che potrebbe dar luogo a rientri

10.Qb3?

(-0.86 → -2.10) Inaccuracy. A better move was 10.h3! Bh5! (10..Af3 11 Df3 Ce7 12 d4! Cg6 12 Dg3 gioco pari) 11.Bb5 (11 De1 leggero vantaggio nero) 11..Bxf3! (11..Ce4?! 12 Da4! gioco confuso) 12.Rxf3 Qd7 13.Rd3 Qe6 14.Qe2 Bb6+ 15 Rh1 De6 16 De2 leggero vantaggio del nero; 10 Cg5!? Dd7! chiaro vantaggio nero idea 000 evitando la patta sul sacrificio di donna; la migliore é 10 Ab5 idea Ce4 11 De2 e vantaggio minimo del nero ad esempio 11..Af3 12 Tf3 Ab6+ 13 Rf1! Dh4 14 d3 e controgioco attivo in cambio del pedone

10…Bb6+ 11.d4?

accellera la fine

11..Qd7

idea 000 -+ ma anche con la spiacevole minaccia per il bianco 11..Ca5

12.Kh1

12 Cg5 Ah5 13 Rh1 000 -+

12..Bxf3!

la mossa risolutiva secondo il computer

13.Rxf3 exd4 14.Bb5 Nxe4!

di nuovo un tratto da silicio, nel senso che salta fuori sulla scacchiera di nuovo la mossa più forte

15.Bxc6 bxc6 16.cxd4 O-O-O 17.Nc3 Nd2

0-1

conclusioni: viste le due partite precedenti in cui il mio avversario aveva perso abbastanza velocemente con degli strafalcioni, questa sonora batosta maturata con le mosse migliori del nero sulla scacchiera suona un pò sospetta; mettiamola così potrebbe essere un test per verificare se il bianco é un computer oppure no, certo é che l’umana 10 h3 al posto dell’ errata Db3 non é facile da trovare sulla scacchiera per restare a galla di bianco!

Best games 2018, Carlsen come il prezzemolo anche se non usa PYTHON

Sacrifici corretti, sacrifici scorretti, ma una bella partita giocata ha tutta una serie di parametri per essere giudicata avvincente e bella e artisticamente adeguata rispondendo a precisi criteri di armonia e correttezza oppure no? All’ indirizzo http://www.chessgames.com/perl/chesscollection?cid=1025103 abbiamo delle prestazioni da urlo ma sarò tutto vero? Ad esempio in questa prestazione di Shirov limitata solo dal fatto che é stata giocata in simultanea, il bianco pigro e indolente sacrifica un paio di torri d’angolo per concludere velocemente la partita in apertura: http://www.chessgames.com/perl/chessgame?gid=1704700 inoltre sono reperibili molte partite di attacco giocate anche in maniera pulita e cristallina come ad esempio http://www.chessgames.com/perl/chessgame?gid=1485587 ma veniamo al punto, quali sono state le partite finora inizio 2018 che meritano menzione artirtica? Chessgames menziona Carlsen http://www.chessgames.com/perl/chessgame?gid=1908642, Giri http://www.chessgames.com/perl/chessgame?gid=1908518 e Anand il vecchietto decrepito in grande spolvero http://www.chessgames.com/perl/chessgame?gid=1908509 in effetti queste tre partite da sole sono in grado se visionate di produrre un patologico mal di testa della durata di un mese (mentre guardando una sola partita di un certo Planinc, una qualsiasi, il mal di testa durerebbe oltre 12 mesi senza soste). Complicazioni a go go che rispondono anche alla domanda critica: che cosa serve realmente per migliorare negli scacchi e fare il salto di qualità una volta che si sono appresi gli elementi di base per una corretta valutazione posizionale? Analisi, analisi e ancora anlisi. Senza la capacità di calcolare complesse varianti senza perdere aderenza con la realtà difficilmente si andrebbe da qualsiasi parte. E ora passiamo a Karpov, pardon volevamo dire a Pyton anche se tra i due ci sono delle analogie.Linguaggio compilato? Interpretato? Generazione di un bytecode e macchina virtuale? Andiamo con calma ad esempio: https://it.wikipedia.org/wiki/Interprete_(informatica) e proseguiamo con sangue freddo https://it.wikipedia.org/wiki/Linguaggio_compilato. All’ indirizzo https://umbriawayfocus.wordpress.com/2018/02/10/ma-se-io-gioco-il-gambetto-di-re-contro-aronian-posso-fare-patta-la-risposta-e-affermativa-se-usi-python-e-se-ti-chiami-carlsen/ abbiamo iniziato a curiosare su Pyton, a questo punto approfondiamo. Come dice mamma wiki Python è un linguaggio multi-paradigma, che ha tra i principali obiettivi dinamicità, semplicità e flessibilità. Supporta il paradigma object oriented, la programmazione strutturata e molte caratteristiche di programmazione funzionale e riflessione. Le caratteristiche più immediatamente riconoscibili di Python sono le variabili non tipizzate e l’uso dell’indentazione per la definizione delle specifiche. Altre caratteristiche distintive sono l’overloading di operatori e funzioni tramite delegation, la presenza di un ricco assortimento di tipi e funzioni di base e librerie standard, sintassi avanzate quali slicing e list comprehension. Il controllo dei tipi è comunque forte (strong typing) e viene eseguito a runtime (dynamic typing). In altre parole, una variabile è un contenitore al quale viene associata un’etichetta (il nome) che può essere associata a diversi contenitori anche di tipo diverso durante il suo tempo di vita. Usa un garbage collector per la liberazione automatica della memoria. Python ha qualche somiglianza con Perl, ma i suoi progettisti hanno scelto la via di una sintassi più essenziale e uniforme, con l’obiettivo di aumentare la leggibilità del codice. Analogamente a Perl è classificato spesso come linguaggio di scripting, ma pur essendo utile per scrivere script di sistema (in alternativa per esempio a bash), la grande quantità di librerie disponibili e la facilità con le quali il linguaggio permette di scrivere software modulare favoriscono anche lo sviluppo di applicazioni molto complesse. Approndiamo sempre all’ indirizzo: https://it.wikipedia.org/wiki/Python :sebbene Python venga in genere considerato un linguaggio interpretato, in realtà il codice sorgente non viene convertito direttamente in linguaggio macchina. Infatti passa prima da una fase di pre-compilazione in bytecode, che viene quasi sempre riutilizzato dopo la prima esecuzione del programma, evitando così di reinterpretare ogni volta il sorgente e incrementando le prestazioni. Inoltre è possibile distribuire programmi Python direttamente in bytecode, saltando totalmente la fase di interpretazione da parte dell’utilizzatore finale, e ottenendo programmi Python a sorgente chiuso. Come il Lisp e a differenza del Perl, l’interprete Python supporta anche un modo d’uso interattivo attraverso il quale è possibile inserire codice direttamente da un terminale, visualizzando immediatamente il risultato. L’interprete è inoltre contenuto nella libreria standard e come in molti altri linguaggi interpretati è possibile far valutare stringhe arbitrarie nel contesto corrente. È però possibile passare all’interprete anche un contesto completamente diverso, sotto forma di liste che contengono l’elenco dei simboli definiti. Python dispone anche di un framework per lo unit testing che supporta lo sviluppo di test unitari automatici. E le prestazioni? Se paragonato ai linguaggi compilati statically typed, come ad esempio il C, la velocità di esecuzione non è uno dei punti di forza di Python, specie nel calcolo matematico. Esiste un’estensione, Psyco, che è una sorta di compilatore JIT in grado di velocizzare in modo notevole alcuni tipi di codice, specialmente l’implementazione di algoritmi, pur aumentando la memoria utilizzata. Le performance di Python sono allineate o addirittura superiori ad altri linguaggi interpretati, quali PHP e Ruby, e in certe condizioni può rivaleggiare anche con Java. Non va inoltre dimenticato che Python permette di aggirare in modo facile l’ostacolo delle performance pure: è infatti relativamente semplice scrivere un’estensione in C o C++ e poi utilizzarla all’interno di Python, sfruttando così l’elevata velocità di un linguaggio compilato solo nelle parti in cui effettivamente serve e sfruttando invece la potenza e versatilità di Python per tutto il resto del software.

Davide batte Golia, quando una mossa come 13 Ag5 rende vano qualsiasi commento, anche quelli in PHP!

Qualcuno ha mai sentito nominare un certo Cordes? Aveva il bianco contro Miles nel 1985 a Bad Warisofen che non so dove stà e a un certo punto salta fuori da qulche lontano universo parallelo una mossa pazzesca come 13 Ag5, certamente sono gli anni più belli per gli scacchi giocati, quelli in cui la matematica e l’informatica erano ancora mescolati alla componente umana. Che può fare Miles, magari difende il pedone con Tf8 ma ecco arrivare uno schema da matto anomalo con 14 De5 scacco. Vabbé so quei pochi minuti di celebrità che tutti prima o poi nella vita attraversiamo se non altro quando ci tocca imprecare alle poste quando qualcuno ci passa davanti. E che succcederà mai, il nero sembra averla sfangata con materiale del tutto pari dopo che quella casa d6 diventa il trampolino di lancio tattico per tutti i giochetti sterili del bianco. Sterili? Alla mossa 19 ecco arrivare una semplice spinta di apertura delle linee con il re nero ormai sfinito e si riaprono le danze fino a quando il nero viene piegato e costretto a perdere materiale. Grande prestazione di Cordes quindi http://www.chessgames.com/perl/chessgame?gid=1097651 ma i misteri sopra questa partita rimangono e Giacobbo che fa? Chi é questo Cordes e perché nessuno lo conosce e come mai ha tirato fuori una prestazione da urlo? E ora con seo specialist Umbria saltiamo a PHP. In molti casi se si desidera che siano visualizzati tutti i messaggi di errore durante lo sviluppo, ma non in fase di produzione si può agire sul PHP.ini. Immettere error_reporting =0 e nella pagina web non verrà visualizzato nessun messaggio di errore. E’ possibile registrare i messaggi di errori in un file di LOG invece di disattivarli completamente. Si utilizzano due impostazioni nel file php.ini: impostare log_errors = On e error_log = percorso/nomefile. RISULTATO: gli errori PHP vengono registrati nel file dal nome specificato. Per maggiori delucidazioni rimandiamo all’ articolo scritto da seo specialist Umbria all’ indirizzo https://umbriawayamplifica.wordpress.com/2018/01/04/messaggi-di-errore-in-php-e-mosse-bastarde-non-e-un-titolo-cult-del-nobel-della-letteratura-kazuo-ishiguro-ma-una-scelta-infida-di-kortchnoi-contro-ljubojevic-a-linares-nel-1985/. E ora in seguito a numerose interrogazioni nell’ aula parlamentare di Umbriaway Consulting cerchiamo di dare una risposta al signor Marzullo di strada del Mughetto a Gallipoli: come faccio a escludere porzioni di codice senza cancellarle? L’argomento é stato affrontato numerose volte e rischia di scapparci il morto ma rispondiamo in maniera cortese. I commenti sono note incorporate nello script. PHP ignora i commenti. I commenti forniscono informazioni per la persona che deve decodificare il codice e capire come si é intervenuti nello script e per fare cosa. I commenti vengono anche usati e utilizzati per circoscrivere la semantica del codice e le sezioi critiche della struttura di una pagina. I commenti semplificano e non complicano e vanno usati, sentenzia Faraoni Enrico CEO di Umbriaway Consulting. I commenti possono avere la distanza desiderata e possono essere inseriti ovunque nello script. Il PARSER PHP ignora queste sezioni di codice e trascura eventuali TAG che sono annidati all’ interno di un commento. Con /* indichiamo l’inizio di un commento mentre con */ ne circoscriviamo la fine. Il blocco può trovarsi su più righe se necessario ad esempio /* testo del commento ….*/ é anche possibile indicare un commento di una sola riga. I caratteri // e # indicano l’inizio di una SOLA RIGA di commento. Non esistono regole sulla formattazione dei commenti, spesso gli autori degli script oltre a segnalare il nome e i dettagli del codice inseriscono delle vere bacheche. I commenti possono essere inseriti anche dopo che abbiamo iniziato a dare istruzioni. Vediamo alcuni esempi di commenti validi:

# questa riga é un commento
// anchye questa riga é un commento
$age=21; // il commento inizia qui

###############################
#commento
###############################

/* name= login.php
* descrizione: …..
* autore …….
* created:…..
*/

E Vaganian che fa?! La sa giocare la francese? Chiedetelo a Reshevsky!

agenzia web marketingAll’ indirizzo https://en.wikipedia.org/wiki/Rafael_Vaganian troviamo delle informazioni utili su questo mostro degli scacchi. In breve. Ha ottenuto lo status di Grandmaster internazionale nel 1971, all’età eccezionalmente giovane di 19 anni, dopo un eccellente risultato al torneo Vrnjacka Banja dello stesso anno, dove ha ottenuto il primo posto davanti a Leonid Stein e Ljubomir Ljubojević. Questo è stato anche l’anno in cui è arrivato quarto al World Junior Chess Championship, il vincitore è stato il giocatore svizzero, Werner Hug. Sulla scia di questo risultato deludente, era così arrabbiato con se stesso che sfidò Hug a un incontro lampo nel tentativo di recuperare un po ‘di orgoglio. I giocatori hanno fatto il blitz solo e Vaganian è risultato vincitore. Personaggio allegro e popolare nel circuito del grandmaster, la sua prestazione complessiva in carriera è eccezionale e include ulteriori vittorie a Kragujevac 1974, São Paulo 1977, Kirovakan 1978, Las Palmas 1979, Manila 1981, Hastings 1982/83, Biel 1985 (Interzonal), Leningrado 1987, Toronto 1990 e Ter Apel 1992. A Mosca 1982 e Tallinn 1983, condivide il primo posto con Mikhail Tal e al Næstved 1985 con Walter Browne e Bent Larsen. Ha vinto due volte il torneo di scacchi di Reggio Emilia, la 35a edizione 1992/93 e la 37a edizione 1994/95. A Odessa nel 1989, ha vinto il 56esimo campionato sovietico al suo 38esimo compleanno. Nei precedenti tentativi aveva condiviso il terzo posto a Leningrado nel 1974 ea Mosca nel 1983, mentre finiva secondo nella sua città natale, nel 1975.agenzia web marketing È stato candidato al campionato del mondo due volte, perdendo per Andrei Sokolov nel 1986 e per Lajos Portisch nel 1988. Si stima che abbia vinto più di trenta tornei in totale, e nel 2004, legato per il primo posto a Mosca L’Aeroflot si apre con Sergei Rublevsky e Valerij Filippov. Nel gennaio 2005, il suo punteggio Elo raggiunse brevemente il massimo del 21 ° secolo al 2670, rimettendolo tra i primi 50 del mondo, nonostante fosse a metà degli anni Cinquanta. Il profilo di questa bestia agonistica lo si trova all’ indirizzo http://www.chessgames.com/perl/chessplayer?pid=13989 e ci sono delle gemme che in tanti forse ricorderanno, come la celebre francese contro Reshewsky giocata nel 1976 http://www.chessgames.com/perl/chessgame?gid=1145474 dove si evince che passeggiare con troppa sicurezza in apertura verso il centro della scacchiera non é qualcosa che fa bene al tabellone. mPer vedere il più classico degli alfiere prende pedone f7 bisogna andare su http://www.chessgames.com/perl/chessgame?gid=1145443 mentre per rispondere alla domanda critica “ma questi GM finito il periodo d’oro a distanza di anni sono ancora in grado di battere in maniera convincente forti GM contemporanei?” bisogna vedere come viene tritato il francese Lautier all’ indirizzo http://www.chessgames.com/perl/chessgame?gid=1277125. E per rispondere al quesito posto da agenzia web marketing sullo stile scomodiamo la colonna Suetin che nel 1985, lo ha descritto come un giocatore con grandi doti naturali. Avendo giocato con lui un certo numero di volte, aveva percepito i grandi poteri di intuizione degli armeni: “Ha una bella sensazione della dinamica di una battaglia a scacchi e sa come intensificare il gioco al momento giusto, non sempre calcola le varianti completamente, facendo affidamento sul suo naturale intuito.” Delle idee volatili di Vaganian alla scacchiera, ha aggiunto “… Il sentimento di paura o incertezza gli è sconosciuto: è un ottimista perpetuo, pieno di intenzioni ambiziose in ogni fase di ogni gioco, con un temperamento esplosivo …”. E ora dopo aver capito che le partite di Vaganian vanno viste studiate ripassate e memorizzate perché senza cultura scacchistica non si va da nessuna parte saltiamo con le esigenze didattiche di Umbriaway Consulting a JavaScript parlando di ARRAY e di armadi e di cassetti e di rappresentazioni di dati. Le matrici ricorda agenzia web marketing, memorizzano più valori in una singola variabile. Per memorizzare tre nomi di corso, hai bisogno di tre variabili.

var course1 =”HTML”;
var course2 =”CSS”;
var course3 =”JS”;

Ma cosa succede se hai avuto 500 corsi? La soluzione è un array.

var courses = new Array(“HTML”, “CSS”, “JS”);

Questa sintassi dichiara una matrice denominata corsi puntualizza agenzia web marketing, che memorizza tre valori o elementi. Si fa riferimento a un elemento dell’array facendo riferimento al numero di indice scritto tra parentesi quadre. Questa istruzione accede al valore del primo elemento nei corsi e cambia il valore del secondo elemento.

var courses = new Array(“HTML”, “CSS”, “JS”);
var course = courses[0]; // HTML
courses[1] = “C++”; //Changes the second element

[0] è il primo elemento di un array. [1] è il secondo. Gli indici di matrice iniziano con 0. Tentativo di accedere a un indice all’esterno dell’array, restituisce il valore non definito.

var courses = new Array(“HTML”, “CSS”, “JS”);
document.write(courses[10]);
//Outputs “undefined”

Il nostro array di corsi ha solo 3 elementi, quindi il decimo indice, che è l’undicesimo elemento, non esiste (non è definito). Puoi anche dichiarare un array, dirgli il numero di elementi che memorizzerà e aggiungere gli elementi in seguito.

var courses = new Array(3);
courses[0] = “HTML”;
courses[1] = “CSS”;
courses[2] = “JS”;

Un array è un tipo speciale di oggetto. Un array usa numeri per accedere ai suoi elementi, e un oggetto usa nomi per accedere ai suoi membri. Gli array JavaScript sono dinamici, quindi è possibile dichiarare un array e non passare alcun argomento con il costruttore Array (). È quindi possibile aggiungere gli elementi in modo dinamico, evidenzia agenzia web marketing.

var courses = new Array();
courses[0] = “HTML”;
courses[1] = “CSS”;
courses[2] = “JS”;
courses[3] = “C++”;

Puoi aggiungere tutti gli elementi che desideri. Per maggiore semplicità, leggibilità e velocità di esecuzione, è anche possibile dichiarare gli array utilizzando la sintassi letterale dell’array.

var courses = [“HTML”, “CSS”, “JS”];

Ciò risulta nello stesso array di quello creato con la nuova sintassi Array ().
È possibile accedere e modificare gli elementi dell’array utilizzando il numero di indice, come fatto in precedenza. La sintassi letterale dell’array è il modo consigliato per dichiarare gli array. Gli array JavaScript hanno proprietà e metodi integrati utili. La proprietà length di una matrice restituisce il numero dei suoi elementi, focalizza agenzia web marketing.

var courses = [“HTML”, “CSS”, “JS”];
document.write(courses.length);
//Outputs 3

La proprietà length è sempre uno più del più alto indice di array. Se la matrice è vuota, la proprietà length restituisce 0. Il metodo concat () di JavaScript consente di unire array e creare un array completamente nuovo. Esempio:

var c1 = [“HTML”, “CSS”];
var c2 = [“JS”, “C++”];
var courses = c1.concat(c2);

L’array di corsi che contiene 4 elementi (HTML, CSS, JS, C ++). L’operazione concat non ha effetto sugli array c1 e c2 – restituisce la concatenazione risultante come nuova matrice. Mentre molti linguaggi di programmazione supportano matrici con indici nominati (testo anziché numeri), chiamati array associativi, JavaScript no. Tuttavia, è ancora possibile utilizzare la sintassi di array denominata, che produrrà un oggetto. Per esempio:

var person = []; //empty array
person[“name”] = “John”;
person[“age”] = 46;
document.write(person[“age”]);
//Outputs “46”

Ora, la persona viene trattata come un oggetto, invece di essere una matrice. Gli indici nominati “nome” e “età” diventano proprietà dell’oggetto persona. Poiché l’array di persone viene trattato come un oggetto, i metodi e le proprietà di matrice standard produrranno risultati errati. Ad esempio, person.length restituirà 0. Ricorda che JavaScript non supporta gli array con indici nominati. In JavaScript, gli array utilizzano sempre indici numerati. È preferibile utilizzare un oggetto quando si desidera che l’indice sia una stringa (testo). Usa un array quando vuoi che l’indice sia un numero. Se si utilizza un indice denominato, JavaScript ridefinirà la matrice su un oggetto standard. L’oggetto Math consente di eseguire attività matematiche e include diverse proprietà, vediamo un esempio con agenzia web marketing.

document.write(Math.PI);
//Outputs 3.141592653589793

La matematica non ha costruttore. Non è necessario creare prima un oggetto Math. L’oggetto Math contiene un numero di metodi che vengono utilizzati per i calcoli. Ad esempio, quanto segue calcola la radice quadrata di un numero.

var number = Math.sqrt(4);
document.write(number);
//Outputs 2

Creiamo un programma che chiederà all’utente di inserire un numero e avvisare la sua radice quadrata.

var n = prompt(“Enter a number”, “”);
var answer = Math.sqrt(n);
alert(“The square root of ” + n + ” is ” + answer);

Il metodo setInterval () chiama una funzione o valuta un’espressione a intervalli specificati (in millisecondi). Continuerà a chiamare la funzione finché non viene chiamato clearInterval () o la finestra viene chiusa. Per esempio:

function myAlert() {
alert(“Hi”);
}
setInterval(myAlert, 3000);

Ciò chiamerà la funzione myAlert ogni 3 secondi (1000 ms = 1 secondo). Scrivi il nome della funzione senza parentesi quando lo passi nel metodo setInterval. L’oggetto Date ci consente di lavorare con le date. Una data è composta da un anno, un mese, un giorno, un’ora, un minuto, un secondo e millisecondi.
Utilizzando la nuova data (), creare un nuovo oggetto data con la data e l’ora correnti.

var d = new Date();
//d stores the current date and time

Gli altri modi per inizializzare le date consentono la creazione di nuovi oggetti data dalla data e ora specificate.

new Date(milliseconds)
new Date(dateString)
new Date(year, month, day, hours, minutes, seconds, milliseconds)

Le date JavaScript sono calcolate in millisecondi dal 01 gennaio 1970 ore 00:00:00 Universal Time (UTC). Un giorno contiene 86.400.000 millisecondi.

//Fri Jan 02 1970 00:00:00
var d1 = new Date(86400000);

//Fri Jan 02 2015 10:42:00
var d2 = new Date(“January 2, 2015 10:42:00”);

//Sat Jun 11 1988 11:42:00
var d3 = new Date(88,5,11,11,42,0,0);

JavaScript conta mesi da 0 a 11. Gennaio è 0, e dicembre è 11. Gli oggetti data sono statici, anziché dinamici. Il tempo del computer sta ticchettando, ma gli oggetti data non cambiano, una volta creati. Quando viene creato un oggetto Date, un numero di metodi consente di eseguire operazioni su di esso.

var d = new Date();
var hours = d.getHours();
//hours is equal to the current hour

Creiamo un programma che stampi l’ora corrente nel browser una volta al secondo.

function printTime() {
var d = new Date();
var hours = d.getHours();
var mins = d.getMinutes();
var secs = d.getSeconds();
document.body.innerHTML = hours+”:”+mins+”:”+secs;
}
setInterval(printTime, 1000);

Abbiamo dichiarato una funzione printTime (), che ottiene l’ora corrente dall’oggetto data e la stampa sullo schermo. Abbiamo quindi chiamato la funzione una volta al secondo, utilizzando il metodo setInterval. La proprietà innerHTML imposta o restituisce il contenuto HTML di un elemento. Nel nostro caso, stiamo modificando il contenuto HTML del corpo del nostro documento. Questo sovrascrive il contenuto ogni secondo, invece di stamparlo ripetutamente sullo schermo.

Mongoose quando un database diventa orientato agli oggetti anche con json, a cura di web marketing Umbria!

La miniatura inflitta da Vladimir Borisovich Tukmakov vs Yuri S Razuvaev al 50th USSR Championship (1983), Moscow URS, rd 1, Apr-03 Queen’s Indian Defense: Fianchetto. Nimzowitsch Variation (E15) finita in maniera tattica e rocambolesca con un 1-0, rientra nei sacrifici di donna, proprio oggi che é la giornata mondiale vs la violenza alle donne. Razuvaev in questa partita forse ha abbandonato il suo proverbiale senso del pericolo, evidenzia web marketing Umbria, per andare a caccia grossa di donne altisonanti, desiderio che Tukmakov ha assecondato, perché l’attività trasmessa dalla assurda vitalità dei pezzi minori del bianco rientra nella categoria iniziativa da far subire a tutti i costi e che fa ottenere risultati e veloci miniature, in questo caso in 27 mosse. Liquidata la parte strategica dei contenuti del post da parte di web marketing Umbria passiamo ad approfondire la complessità dei moduli front end per l’aspirante sviluppatore web con le righe di comando, node e mongo, tutti framework che ci consentiranno di costruire interessanti applicazioni. Per entrare subito nel vivo degli argomenti iniziamo a smanettare su https://nodejs.org/it/ dove dalla pagina principale arriviamo a https://www.npmjs.com/package/mongoose e per avere i riferimento rispetto a installazione e uso di MONGOOSE andiamo su http://mongoosejs.com/. Come al solito l’installazione avviene in maniera semplice con il comando $ npm install mongoose. Su UmbriawayVendita siamo entrati in quello che era il modulo MongoDB ma in questo caso abbiamo deciso di utilizzare un’ altro modulo dopo averlo scaricato che si chiama per l’appunto MONGOOSE che come database ha la particolarità di essere orientato agli oggetti. Con JS coinvolto anche nelle logiche asincrone di XML in Mongoose viene introdotto un nuovo tema, quella della PROMESSA che non é un film anche divertente da vedere ma una promessa per l’appunto che nel corso della giornata andrò a completare tutti i miei compiti, che essi siano di passare in edicola piuttosto che andare al cinema per vedere l’ultima versione di Blade Runner. La metafora in carne ed ossa si sposa con quelle che sono le logiche di Mongoose nel senso che nelle attività asincrone abbiamo la certezza che prima o poi quel compito verrà eseguito senza incappare in un blocco sincrono che non fa andare avanti se va incontro a qualsiasi inghippo. Web marketing Umbria fa notare che NODE di suo é sincrono nel senso che tu dai un comando e lui lo esegue mentre Mongoose é asincrono nel senso che le chiamate prima o poi verranno elaborate ed eseguite. In MongoDB avevamo visto che il collegamento avveniva tramite DRIVER o API per eseguire le diverse funzioni da esercitare. Mongoose segue logiche diverse, consente di istanziare i suoi oggetti utilizzando semplici funzioni JS. In particolare la connessione é il primo problema da risolvere e dopo ci ritroveremo subito a definire lo SCHEMA che non é altro una dichiarazione di intenti in cui il programma delinea una struttura e un tipo dei dati su campi come autore o editore o titolo assegnando i soliti stringa o intero o booleano a seconda delle necessità.

Una volta che abbiamo lo schema con web marketing Umbria andremo ad eseguire le nostre funzioni con il MODELLO che istanzia e rende operative le nostre necessità con comandi CRUD che conosciamo in lettura, scrittura, aggiornamento, cancellazione dei dati. Ne deriva pertanto il fahe lo Schemas che é una sorta di indice strutturato deve sempre precedere il Models. Le parole chiave sono quelle usate anche sol pacchetto MongoDB quindi ci ritorveremo a che fare con PROMESSE intrise di metori remove, find (posso cercare un elemento o più elementi o anche per ID), delete e update. E siamo giunti alla conclusione di questo breve excursus con web marketing Umbria e quindi è doveroso fare una sintesi di quello che é stato prodotto a livello di post su uno dei tanti portali di Umbriaway Consulting. Abbiamo visto come installare NODE, affrontato la questione dell’ integrazione dei moduli con NPM, sappiamo inizializzare le nostre applicazioni con il comando node app.js, sappiamo come includere file JSON nei nostri progetti con il comando NPM INIT, abbiamo imparato come connetterci a MongoDB e Mongoose e come gestire i dati in modalità CRUD, create, leggere, aggiornare, cancellare dati. Abbiamo utilizzato due ottimi tools come Nodemon e Robomongo. A questo punto ci manca la parte migliore che risponderà alla domanda ma come faccio a organizzare una applicazione completa con tutti questi elementi? Prima di alzare l’asticella segnaliamo che la grafica inclusa da web marketing Umbria nel post é royalty free presa dall’ ottimo sito https://unsplash.com. Stay tuned adesso viene il bello!

Ma come hai fatto ad allineare tutti gli articoli su una unica riga? Ma il float come proprietà con i CSS la usi?

Diciamocelo la vita non sarebbe la stessa senza i CSS, certo é roba leggerina più per web designer piuttosto che per web developer, ma hanno un grande potenziale per rendere graficamente accattivanti pezzi di codice grezzo che senza un vestito ammiccante darebbero poca soddisfazione nello sviluppo web in Umbria. Vediamo questo all’ indirizzo: http://www.farwebdesign.com/css/aforismi/…verrebbe da chiedere ma come si fa ad allineare tutti gli articoli su unica riga oppure come si fa a delimitare i div con il bordino e il radius angolare? Come faccio agestire le immagini? Come faccio a centrale tutto il materiale più a destra piuttosto che sopportare passivamente un allineamento a sinistra che mi viene proposto in automatico? Prima di rispondere a tutte queste domande con web developer Umbria chiediamoci prima se hai fede scacchisticamente nel calcolo delle varianti. Mettiamo il caso che ti stai giocando una posizione tipo http://www.chessgames.com/perl/chessgame?gid=1152906 e dici ok adesso metto il cavallo nella casa c3 confidando sul fatto che non posso perdere d4 a causa del trucchetto tattico scacco in g6…ebbene tutta questa superficialità da parte di Gligoric non é così premiante nel senso che il nero Schmidt mangiò proprio in d4 confidando su una apertura della colonna h che il bianco non aveva fatto previsto…notevole il modo in cui tatticamente il B sia riuscito a creare fuffa torbida da acqua del tevere fiendo per pattare la partita ma certo l’episodio mostra uno dei pericoli N 1 per gli scacchisti, la pigrizia analitica! Certo che la mossa 8 Cd5 così a occhio farebbe pensare a qualocosa di geniale ma solo umanamente visto che così a intuito un motore si schiererebbe come vittoria da parte del nero! Ok adesso possiamo tornare a tutte le domande di cui sopra con web developer Umbria, con tasto destro si può vedere il sorgente e arrivare a delle risposte automatiche per ogni quesito dal momento che tutte le regole CSS assolvono a compiti ben specifici. La centratura degli elementi si é verificata con un banale utilizzo del comando regola margin-left su una impostazione CSS del body, mentre i border-radius caratterizzano l’area che viene spalmata sul display con l’accorgimento float: left sull’ elemento di interesse che spinge tutti gli elementi appunto svolazzanti a coprire l’intera pagina, cosa che in assenza di questa regola impilerebbe tutto con un lunghissimo scroll verticale. Per quanto riguarda le combinazioni capita a tutti di vederle con molto ritardo anche a distanza di anni volendo!

Stai come uno di Ferrara sugli alberi a 50 gradi le foglie?! Allora tutto ciò é di buon auspicio perché la fortuna esiste negli scacchi e probabilmente non morirai assiderato dal caldo!

Ma della partita giocata tra Euwe e Smyslov ne vogliamo parlare giocata al campionato del mondo del 1948 con web developer Umbria? Certo che la fortuna esiste proprio eh a scacchi! Smyslov stava come uno di Bologna sugli alberi ad Agosto! Ebbene il B come si dice in gergo ha apparecchiato bene la tavola, tutti i prezzi sono pronti per l’accoppiamento parafrasando battiato e anche la prima mossa giocata da Euwe é giusta 1 Ceg6!! che scardina la fortezza nemica, la donna non si può prendere causa matto in f8 quindi Smyslov gioca 1..fg6 unica e adesso il Bianco che fa? Al posto di giocare 2 Dg4 con idee del tipo 2..Df7 3 e5 Ce7 4 e6 De8 5 Ch5! oppure anche 2..Af7 3 e5 Ag5 4 e6 Ae8 5 Cxg6 Axg6 6 Df5!! Dg7 7 Df7!! DxD 8 exf7 Axb1 9 f=cavallo matto se ne parte e spara 2 Cxg6 al che il povero Smyslov forzatamente deve di nuovo prendere con serafica calma con la freddezza di un monaco Zen che sta per vedere il nirvana. Adesso dopo 2..Rg6 il bianco avrebbe ancora un forte attacco giocando cose del tipo 3 Df3! Cf6 4 e5 ma Euwe imbambolato riesce a giocare una linea che lo porta al secondo diagramma perdendo la partita. La questione della psicologia degli errori negli scacchi é materia vasta e affascinante. Smyslov aveva studiato da ipnotista? Non lo sappiamo, assistiamo solo a uno scempio di combinazione mancata. Saltando di nuovo nel mondo parallelo della programmazione che ha così tante analogie con quello degli scacchi con web developer Umbria, torniamo a JS. In Java Script tutto quello che non é un a parola chiave é una variabile, tipo pippo=3; alert(pippo); puto=pippo; dove l’alert mostrerà il contenuto della variabile nella finestra del browser e dove dopo si assegna alla variabile pluto lo stesso contenuto della variabile pippo. Benché non sia strettamente necessario é bene attribuire la dichiarazione della variabile con var pippo; quello che stupisce é che non abbiamo una dichiarazione sul tipo di dati, le variabili in JS possono contenere qualsiasi tipo di dato e anche tipi diversi per esempio é corretto scrivere var pippo; pippo =3;pippo= “stringa testo”; esistono anche forme d compatte per scrivere tipo pippo = pippo * 2; che é anche uguale a pippo*=2; un altra operazione molto comune, ricorda web developer Umbria alias Faraoni Enrico ceo di Umbriaway Consulting, é l’incremento di una unità e il decremento dell’ unità, per questi due casi si usano rispettivamente gli operatori ++ e –: pippo–; pippo++; che equivalgono a pippo=pippo-1; e pippo = pippo +1; bisogna prestare attenzione alle forme compatte di somma e sottrazione nel caso esse vengano usate in espressioni, si consideri il seguente caso dove a=1; e b=1+ e a++; quanto valgono le variabili a e b al termine delle due istruzioni? Facendo una verifica possiamo dire che valgono 2, la seconda istruzione ha fatto prima la somma tra 1 e il valore precedente di a, poi é stata incrementata di 1. Per questa caratteristica le operazioni a ++ e a– si chiamano rispettivamente post incremento e post decremento (perché l’operazione viene effettuata dopo l’uso del valore contenuto nella variabie se questa é usata in espressioni). In maniera analoga esistono le operazioni di pre-incremento (++a) e pre-decremento (–a) eccco allora che scriveremo a=1; b = 1+ ++a; si può verificare che a vale sempre 2 mentre b ora vale 3. Occorre fare attenzione quando si utilizzano gli operatori di pre o post incremento in espressioni booleane complesse, si consideri per esempio questo caso dove a=0; var b=0; var bool1=a++>0 || b++>0); var bool2 =(a++<0 && b++<0); si provi a calcolare, al termine delle istruzioni i valori di a, b, bool1 e bool2. Dopo avere dato una risposta confrontate il risultato con la soluzione ossia a=2; b=1; bool=false; bool2=false; nel primo caso bool1 l’interprete valuta la prim espressione a++>0. Per farlo il valore il valore attuale di a (che é 0) viene valutato e poi confrontato, il confronto dà come risultato FALSE e poi si é incrementato di 1. Visto che c’è un OR logico la prima parte é stata valutata FALSE, l’interprete valuta anche la seconda parteper decidere il valore complessivo dell’ espressione. Lo fa in maniera analoga alla prima parte, per cui il risultato complessivo é FALSE e anche b viene incrementato di 1. A questo punto si valuta bool2. La prima espressione é a++<0; siccome a vale 1, a viene valutato FALSE e poi incrementato di 1. Però questa espressione fa si che l’intera espressione, essendoci AND sarà valutata a FALSE; pertanto la seconda espressione non viene valutata e il risultato per bool2 é FALSE, mentre ora a vale 2 e b resta con il valore 1. Ma che regole di conversione usa JS sul tipo di dati, come valuta una espressione del tipo: alert(“32/3/1.1*3*1.1=” + 32/3/1.1*3*1.1); a che tipo di risultato andiamo incontro? Serve Nostradamus per decodificare questa centuria? Il fatto é che JS ha le sue regole di conversione e l’operatore + nel caso di cui sopra ha una doppia funzione addiziona anche le stringhe oltre che fare calcoli. In pratica trasforma il numero in stringa e poi esegue la concatenazione, ribadisce web developer Umbria. Ma che dire di alert (3+2+”=3+2″); e alert (“3+2=”+3+2); a prima vista il tutto sembra equivalente o quasi ma provando si riscontra che le istruzioni non sono uguali affatto dove nel primo caso ottengo un alert con su scritto 5=3+2 e nel secondo ottengo 3+2 = 32. Per rendere i due script equivalenti é necessario far si che l’ordine delle operazioni, nei due casi sia uguale e per farlo si possono introdurre le parentesi visto che gli operatori + hanno diversi utilizzo di precedenza a seconda del contesto in cui si trovano. sostanzialmente ci sono diverse regole di precedenza su + e * per cui prima vengono risolti i * poi il +, del resto anche a scuola ci dicevano prima esegui le moltiplicazioni e le divisioni poi la somma. In Javascript per trasformare la stringa in un numero si può usare la funzione parseInt() per ottenere un numero intero oppure parseFloat() per ottenre un numero con la virgola. Si faccia attenzione perché il parser su una stringa che non é un numero fa restituire NaN valore particolare che indica “Not a Number” ovvero “non é un numero”.Nel caso che la stringa abbia un numero come prima parte, e poi una qualsiasi stringa, restituisce comunque il valore di tale numero. Per esempio tutte le espressioni tipo parseInt(’12’) o parseInt (’12pippo’) o parseInt (’12 12 12′) restituiscono tutte il valore 12; parseInt ha un secondo parametro opzionale che rappresenta la base da usare nel parsing del numero. Tale base può essere un numero da 2 a 36. Ecco ad esempio come eseguire il parser di una stringa in base 16 con risultato consequenziale che é 12: parseInt (‘c’, 16) e parseInt (‘0x0c’,16). Conviene anche esercitarsi con javascript e le basi diverse da dieci ma sul training ci sarà modo di vedere qualcosa di inerente con web developer Umbria!

Blog su WordPress.com.

Su ↑