Monday, September 16, 2019

MySQL timezone setting in Node.js sequelize

MySQL timezone convert function CONVERT_TZ

update account set createdAt=CONVERT_TZ(createdAt, '+00:00', '+09:00'), updatedAt=CONVERT_TZ(updatedAt, '+00:00', '+09:00')

Wednesday, September 4, 2019

MariaDB Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)

ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)

mysql.server start
Starting MariaDB
.190904 09:57:41 mysqld_safe Logging to '/usr/local/var/mysql/duongame-MacBook-Pro.local.err'.
190904 09:57:42 mysqld_safe Starting mysqld daemon with databases from /usr/local/var/mysql
 SUCCESS!

Tuesday, September 3, 2019

BitcoinSV Node.js bitsocket example

아래는 BitcoinSV의 실시간 event를 받을수 있는 bitsocket의 example이다.
Node.js로 작성했으며, 다음과 같은 패키지를 npm으로 설치해야 한다.

>npm i -S btoa
>npm i -S eventsource

var btoa = require('btoa')
var EventSource = require('eventsource')

// Write a bitquery
var query = {
  "v": 3, "q": { "find": {} }
}

// Encode it in base64 format
var b64 = btoa(JSON.stringify(query))

// Subscribe
var bitsocket = new EventSource('https://genesis.bitdb.network/s/1FnauZ9aUH2Bex6JzdcV4eNX7oLSSEbxtN/'+b64)

// Event handler
bitsocket.onmessage = function(e) {
  console.log(e.data)
}
//호출결과는 다음과 같으며 실시간으로 계속 메세지가 추가된다.
{"type":"open","data":[]}
{
    "type": "u",
    "data": [{
        "tx": {
            "h": "0c07b01307b14e3935bcdbaf50770c0e4a4e23aeb9c09c49550e09a5ad570652"
        },
        "in": [{
            "i": 0,
            "b0": "MEUCIQD6VwsndQUrrpmFCJPlxuAF1fUmZcPAx5UgC803Som2cQIgZuwlNDM3Puu/3wqqzTd5cFbUO8fEX4Q5Y9jCBdKMoDtB",
            "b1": "A8ydsZIv8Hew5jLQLoKpxqunqCx2xT18H1aKd3XIlURe",
            "str": "3045022100fa570b2775052bae99850893e5c6e005d5f52665c3c0c795200bcd374a89b671022066ec253433373eebbfdf0aaacd37797056d43bc7c45f843963d8c205d28ca03b41 03cc9db1922ff077b0e632d02e82a9c6aba7a82c76c53d7c1f568a7775c895445e",
            "e": {
                "h": "07225863412d4d037cb5514ccf94a29583691367218f28eced772c0ef1e9a866",
                "i": 1,
                "a": "1EomR6yvfRUCUeR9RdiLE8AUkveW6wA2uz"
            },
            "h0": "3045022100fa570b2775052bae99850893e5c6e005d5f52665c3c0c795200bcd374a89b671022066ec253433373eebbfdf0aaacd37797056d43bc7c45f843963d8c205d28ca03b41",
            "h1": "03cc9db1922ff077b0e632d02e82a9c6aba7a82c76c53d7c1f568a7775c895445e"
        }],
        "out": [{
            "i": 0,
            "b0": {
                "op": 118
            },
            "b1": {
                "op": 169
            },
            "b2": "4QBR3rSIWSQI33JyQGzqWd/mEcY=",
            "s2": "�\u0000Q޴�Y$\b�rr@l�Y��\u0011�",
            "b3": {
                "op": 136
            },
            "b4": {
                "op": 172
            },
            "e": {
                "v": 1000,
                "i": 0,
                "a": "1MWhRPAtAdXFSTgZrkrRuDy5xsofz63nHD"
            },
            "h2": "e10051deb488592408df7272406cea59dfe611c6"
        }, {
            "i": 1,
            "b0": {
                "op": 118
            },
            "b1": {
                "op": 169
            },
            "b2": "l3HYfq/xcSUVBLXAClhqHDwqGj4=",
            "s2": "�q�~��q%\u0015\u0004��\nXj\u001c<*\u001a>",
            "b3": {
                "op": 136
            },
            "b4": {
                "op": 172
            },
            "e": {
                "v": 6695136,
                "i": 1,
                "a": "1EomR6yvfRUCUeR9RdiLE8AUkveW6wA2uz"
            },
            "h2": "9771d87eaff171251504b5c00a586a1c3c2a1a3e"
        }],
        "_id": "5cbe972233dedb166dc469c8"
    }]
}

Node.js SSE example

Node.js로 작성한 SSE(Server Sent Event) 예제이다.


//서버
const express = require('express')
const serveStatic = require('serve-static')
const SseStream = require('ssestream')

const app = express()
app.use(serveStatic(__dirname))
app.get('/sse', (req, res) => {
  console.log('new connection')

  const sseStream = new SseStream(req)
  sseStream.pipe(res)
  const pusher = setInterval(() => {
    sseStream.write({
      data: new Date().toTimeString()
    })
  }, 1000)

  res.on('close', () => {
    console.log('lost connection')
    clearInterval(pusher)
    sseStream.unpipe(res)
  })
})

app.listen(8080, (err) => {
  if (err) throw err
  console.log('server ready on http://localhost:8080')
})

//클라이언트
var EventSource = require('eventsource')
var es = new EventSource('http://localhost:8080/sse')
es.onmessage = e => {
    console.log(e.data)
}