- Open Telegram application then search for
@BotFather
- Click Start
- Click Menu -> /newbot or type
/newbot
and hit Send - Follow the instruction until we get message like so
Done! Congratulations on your new bot. You will find it at t.me/new_bot.
Discover gists
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This note explains how to build Postgres from source and setup to debug it using LLDB on a Mac. I used this technique to research this article: | |
http://patshaughnessy.net/2014/10/13/following-a-select-statement-through-postgres-internals | |
1. Shut down existing postgres if necessary - you don’t want to mess up your existing DB or work :) | |
$ ps aux | grep postgres | |
pat 456 0.0 0.0 2503812 828 ?? Ss Sun10AM 0:11.59 postgres: stats collector process | |
pat 455 0.0 0.0 2649692 2536 ?? Ss Sun10AM 0:05.00 postgres: autovacuum launcher process | |
pat 454 0.0 0.0 2640476 304 ?? Ss Sun10AM 0:00.74 postgres: wal writer process | |
pat 453 0.0 0.0 2640476 336 ?? Ss Sun10AM 0:00.76 postgres: writer process |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
DECLARE | |
/* aqui van las variables */ | |
BEGIN | |
/* estructura del programa, sentencias SQL */ | |
EXCEPTION | |
/* manejo de excepciones */ | |
END; | |
/* final del bloque */ |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/** | |
* Group array of objects by object key | |
* Example: | |
const pets = [ | |
{ type:"Dog", name:"Bobik", skills: { canBite: true } }, | |
{ type:"Cat", name:"Tiger", skills: { canBite: true } }, | |
{ type:"Dog", name:"Tuzik", skills: { canBite: true } }, | |
{ type:"Cat", name:"Leopold", skills: { canBite: false } } | |
]; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// Функция обертка для кеширования результатов вызова функции | |
const cache = new Map() | |
const cached = (fn, fnName = '') => { | |
if (fnName) console.info(`Результат выполнения функции '${fnName}' будет закэширован`); | |
return async (...params) => { | |
const key = params.toString() | |
if (!cache.has(key) ) { | |
console.log('функция будет выполнена') |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# Backup | |
docker exec CONTAINER /usr/bin/mysqldump -u root --password=root DATABASE > backup.sql | |
# Restore | |
cat backup.sql | docker exec -i CONTAINER /usr/bin/mysql -u root --password=root DATABASE | |
A simple Ghostscript command to merge two PDFs in a single file is shown below:
gs -dNOPAUSE -sDEVICE=pdfwrite -sOUTPUTFILE=combine.pdf -dBATCH 1.pdf 2.pdf
Install Ghostscript:
Type the command sudo apt-get install ghostscript
to download and install the ghostscript package and all of the packages it depends on.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// A simple thread-safe queue implementation based on std::list<>::splice | |
// after a tip in a talk by Sean Parent of Adobe. | |
// | |
// Uses standard library threading and synchronization primitives together | |
// with a std::list<> container for implementing a thread-safe queue. The | |
// only special thing is that the queue uses std::list<>::splice in the | |
// locked region to minimize locked time. | |
// | |
// Also implements a maximal size and can thus be used as a buffer between | |
// the elements in a pipeline with limited buffer bloat. |
Some stats: - Total number of links: 23983
NewerOlder