Skip to content

Instantly share code, notes, and snippets.

View aigoncharov's full-sized avatar

Andrey Goncharov aigoncharov

View GitHub Profile
@aigoncharov
aigoncharov / gist:b75f9108a40d290a06b17722eaf2ee0f
Last active September 6, 2024 05:44
Баньки у Сколтеха
@aigoncharov
aigoncharov / due_date_labels.css
Last active July 14, 2024 11:11 — forked from califa/due_date_labels.css
Obsidian Tasks due date labels
/* Better task list alignment and spacing */
.contains-task-list .task-list-item-checkbox {
top: .5em !important;
left: 0;
position: absolute;
}
.plugin-tasks-query-result {
padding-left: 0 !important;
}
const controller = (req, res, next) => {
loggerCls.info('Long live rocknroll!')
// Logs something like
// {"level":30,"time":1551385666046,"msg":"Long live rocknroll!","pid":25,"hostname":"eb6a6c70f5c4","traceID":"9ba393f0-ec8c-4396-8092-b7e4b6f375b5","v":1}
}
const cls = require('cls-hooked')
const uuidv4 = require('uuid/v4')
const clsMiddleware = (req, res, next) => {
// req and res are event emitters. We want to access CLS context inside of their event callbacks
clsNamespace.bind(req)
clsNamespace.bind(res)
const traceID = uuidv4()
const loggerWithTraceId = logger.child({ traceID })
const pino = require('pino')
const logger = pino()
const loggerCls = new Proxy(logger, {
get(target, property, receiver) {
// Fallback to our original logger if there is no child logger in CLS
target = clsNamespace.get('loggerCls') || target
return Reflect.get(target, property, receiver)
},
})
const { createLogger, format, transports } = require('winston')
const addTraceId = printf((info) => {
let message = info.message
const traceID = clsNamespace.get('taceID')
if (traceID) {
message = `[TraceID: ${traceID}]: ${message}`
}
return message
})
const controller = (req, res, next) => {
const traceID = clsNamespace.get('traceID')
}
const cls = require('cls-hooked')
const uuidv4 = require('uuid/v4')
const clsNamespace = cls.createNamespace('app')
const clsMiddleware = (req, res, next) => {
// req and res are event emitters. We want to access CLS context inside of their event callbacks
clsNamespace.bind(req)
clsNamespace.bind(res)
@aigoncharov
aigoncharov / class-based-reducers-7.js
Created February 11, 2019 19:50
Reducer organization - taking a step further
// We move that generic code to a dedicated module
import { Action, createClassReducer } from 'utils/reducer-class'
const actionTypeJediCreateInit = 'jedi-app/jedi-create-init'
const actionTypeJediCreateSuccess = 'jedi-app/jedi-create-success'
const actionTypeJediCreateError = 'jedi-app/jedi-create-error'
class ReducerJedi {
// Take a look at "Class field delcaratrions" proposal, which is now at Stage 3.
// https://github.com/tc39/proposal-class-fields
@aigoncharov
aigoncharov / class-based-reducers-6.js
Created February 11, 2019 19:47
Reducer organization - taking a step further
const reducerJedi = createClassReducer(ReducerJedi)