Mattepuffo
Connessione a MongoDB con Node.js


Oggi vediamo come connettere Node.js a MongoDB.

Useremo anche Express; ormai è diventato praticamente un modulo standard.

Partiamo dal classico package.json:

{
    "name": "NodeB2B",
    "version": "1.0.0",
    "keywords": ["util", "functional", "server", "client", "browser"],
    "author": "Matteopuffo",
    "contributors": [],
    "dependencies": {
        "express": "*",
        "mongodb": "*"
    }
}

Come dipendenze indichiamo di prendere le ultime versioni di entrambi i moduli.

Mattepuffo
Come risolvere l'errore JavaScript heap out of memory in NPM


L'altra settimana stavo combattendo con Node.js ed NPM.

In pratica ottenevo sempre questo errore:

$ npm search mongo npm WARN Building the local index for the first time, please be patient [..................] | : WARN Building the local index for the first time, please be patient
     
    [12455:0x23175c0]    73384 ms: Mark-sweep 1038.6 (1354.9) -> 1032.1 (1351.0) MB, 808.4 / 0.0 ms  allocation failure GC in old space requested [12455:0x23175c0]    74196 ms: Mark-sweep 1032.1 (1351.0) ->
    1031.9 (1314.0) MB, 811.6 / 0.0 ms  last resort gc  [12455:0x23175c0]    75024 ms: Mark-sweep 1031.9 (1314.0) -> 1031.9 (1307.0) MB, 828.2 /
    0.0 ms  last resort gc 
     
    ==== JS stack trace =========================================
     
    Security context: 0x1301816c0d11
        1: fromString(aka fromString) [buffer.js:217] [pc=0xd2afa68dcae](this=0x130181604311 ,string=0x2c89d250c589 ,encoding=0x1301816c9921 <String[4]: utf8>)
        2: from [buffer.js:114] [pc=0xd2afa691090](this=0x12c0d1a860b1 ,value=0x2c89d250c589 ,encodingOrOffset=0x1301816...
     
    FATAL ERROR: CALL_AND_RETRY_LAST Allocation failed - JavaScript heap out of memory  1: node::Abort() [npm]  2: 0xf4e4cc [npm]  3: v8::Utils::ReportOOMFailure(char const*, bool) [npm]  4: v8::internal::V8::FatalProcessOutOfMemory(char const*, bool) [npm]  5: v8::internal::Factory::NewRawTwoByteString(int, v8::internal::PretenureFlag) [npm]  6: v8::internal::String::SlowFlatten(v8::internal::Handle, v8::internal::PretenureFlag) [npm]  7: v8::internal::String::Flatten(v8::internal::Handle, v8::internal::PretenureFlag) [npm]  8: v8::String::WriteUtf8(char*, int, int*, int) const [npm]  9: node::StringBytes::Write(v8::Isolate*, char*, unsigned long, v8::Local, node::encoding, int*) [npm] 10: node::Buffer::New(v8::Isolate*, v8::Local, node::encoding) [npm] 11: node::Buffer::CreateFromString(v8::FunctionCallbackInfo const&) [npm] 12: v8::internal::FunctionCallbackArguments::Call(void (*)(v8::FunctionCallbackInfo const&)) [npm] 13: 0x7f1698 [npm] 14: 0x7f1a30 [npm] 15: v8::internal::Builtin_HandleApiCall(int, v8::internal::Object**, v8::internal::Isolate*) [npm] 16: 0xd2afa1063a7 Annullato (core dump creato)

Mattepuffo
Visualizzare i valori dei parametri di una funzione in Javascript


L'altro giorno stavo combattendo con una funzione in Javascript di quelle che non voleva proprio funzionare.

Alla fine avevo capito che il problema era nei parametri passati alla funzione, ma non mi andava di controllarli uno per uno.

Cercavo un modo per fare un debug diretto di tutti i parametri (un pò tipo la func_get_args di PHP).

Alla fine ci sono riuscito usando la propretà Array.prototype.

Mattepuffo
Esportare una tabella in Excel con Javascript


Se usate jQuery DataTable o simili, probabilmente avete già una funzione di esportazione della tabella in Excel.

Ma se avete una semplice tabella da esportare al volo, potete usare un semplice plugin per jQuery che si occupa di fare solo quello: jQuery table2excel!

Il suo utilizzo è molto semplice:

  • includete jQuery
  • includete la libreria
  • impostate un id su un bottone
  • impostate un id sulla tabella
  • impostate qualche riga di codice per attivare il tutto
Mattepuffo
Usare il pattern Singleton in Javascript


Alcuni lo considerano cattiva programmazione, altri no, altri sono più moderati.

Ma come la metti la metti il pattern Singleton continua ad essere molto utilizzato in tutti i linguaggi.

Abbiamo già visto qualche implementazione, ed oggi aggiungiamo un esempio in Javascript.

Per chi non sa ancora cosa sia Singleton, vi riporto la definizione di Wikipedia:

Il singleton è un design pattern creazionale che ha lo scopo di garantire che di una determinata classe venga creata una e una sola istanza, e di fornire un punto di accesso globale a tale istanza.