Skip to content

Instantly share code, notes, and snippets.

@kyptov
kyptov / lambda_cron.yaml
Created April 20, 2021 09:45
Run lambda every 5 minutes
AWSTemplateFormatVersion: "2010-09-09"
Resources:
LambdaFunctionRole:
Type: AWS::IAM::Role
Properties:
AssumeRolePolicyDocument:
Version: 2012-10-17
Statement:
@kyptov
kyptov / UnityLoader.js
Last active January 15, 2022 13:01
without gzip and brotli decompressors
var UnityLoader = UnityLoader || {
Compression: {
identity: {
require: function() {
return {};
},
decompress: function(data) {
return data;
},
hasUnityMarker: function() {
@kyptov
kyptov / getDirection.js
Created June 29, 2017 05:08
Useful function to detect one of side direction by two vectors. This for elements with 8 different sprites for each side. Based on scalar product.
function getSide(from, to) {
/*
* For nord returns 0, for east - 2, and so on
* Lot of things simplified
* As max and min scalar product is always opposite, than we need to check only some of scalar product
* For example scalar product for nord:
* var nord = {x: 0, y: 1}
* var d0 = x * nord.x + y * nord.y
* x * 0 + y * 1 = y
@kyptov
kyptov / SpriteManager.js
Last active May 18, 2017 09:02
Babylon js SpriteManager with LogarithmicDepth support
class SpriteManager extends BABYLON.SpriteManager {
constructor(...args) {
super(...args);
if (!BABYLON.Effect.ShadersStore.spritesDepthVertexShader) {
SpriteManager.init();
}
// Effects
@kyptov
kyptov / httpPromise.js
Created November 1, 2016 06:55
Simple function to request url using promise. Thanks to https://www.tomas-dvorak.cz/posts/nodejs-request-without-dependencies/
const getContent = function(url) {
return new Promise((resolve, reject) => {
// select http or https module, depending on reqested url
const lib = url.startsWith('https') ? require('https') : require('http');
lib.get(url)
.on('response', resolve)
.on('error', reject);
@kyptov
kyptov / spammers.js
Created October 26, 2016 15:39
Async/await analog with promises
let spammers = [];
getUser()
.catch(onGetUserErrorHandler)
.then(getSpammer)
.then(() => console.log(spammers));
function getSpammer(user) {
if (user === null) {
@kyptov
kyptov / rabbitmq_cheatsheet_ru.md
Last active February 11, 2024 21:18
RabbitMQ Cheat Sheet (russian)

Общие упрощенные понятия. Возможно существуют способы задать другое поведение нежели данное упощенное.

Понятия

  • producer - отправитель, программный код, который отправляет сообщение.
  • consumer - получатель, программный код, который должен получить сообшение.
  • exchange - обменник, функционал RabbitMQ, получает сообщение с заданными параметрами от отправителя и:
    • может сбросить(удалить) сообщение или вернуть отправителю (зависит от атрибутов сообщения),
    • может отправить сообщение в очередь,
    • может отправить сообщение в несколько очередей (сообщение будет скопировано для каждой очереди)
  • queue - очередь, функционал RabbitMQ, хранит все сообщения и раздает их получателям.
  • message - сообщение, содержит атрибуты необходимые RabbitMQ, а также данные для передачи от отправителя к получателю
@kyptov
kyptov / prettyArray.php
Created August 29, 2016 13:24
Example how to pretty display decoded json in PHP. Keeps structure for bindings. By clicking on element it possible to get full path from top parent to the nested elements.
<?php
declare(strict_types = 1);
function isSequential($array)
{
return array_keys($array) === range(0, count($array) - 1);
}
function prettyArray($value, $is_last = true, $indent = 0)
{
@kyptov
kyptov / usort_array.php
Created January 30, 2016 06:27
A simple way to sort data from database. Useful when cannot be use ORDER BY
<?php
$array = [
['ts' => 3],
['ts' => 5],
['ts' => 1],
['ts' => 2],
['ts' => 7],
['ts' => 0],
];
@kyptov
kyptov / two_array_iteration.js
Created January 22, 2016 03:52
Mapping two array with native functions into objects, each object differs by parent array.
var a = [1,2,3,4,5];
var b = [11,12,13,14];
var length = a.length;
var c = a.concat(b).map(function(value, index) {
return {
value: value,
isA: index >= length
}
});