Skip to content

Instantly share code, notes, and snippets.

View slavafomin's full-sized avatar
✌️
Let's make this World a better place!

Slava slavafomin

✌️
Let's make this World a better place!
View GitHub Profile
@slavafomin
slavafomin / javascript-pluralization.md
Last active February 12, 2023 19:22
How to pluralize words in JavaScript in different languages?

How to pluralize any word in different languages using JavaScript?

Hello!

Today, I'm going to show you how to pluralize any word in JavaScript (Node.js or Browser) in almost any language!

I've developed a very simple, but powerful package in JavaScript that will help you to achieve this goal. It's called Numerous.

{% if share_url is not defined %}
{% set share_url = project.url %}
{% endif %}
{% set share_url = share_url|url_encode %}
{% if share_title is not defined %}
{% set share_title = project.readable_name %}
{% endif %}
{% set share_title = share_title|url_encode %}
@slavafomin
slavafomin / tilda-scripts-patch.md
Last active December 7, 2016 21:02
Tilda Cover's Min Width For Video Patch

tilda-scripts-2.6.js

1). Add the following snippet to the cover_init function (before $isMobile is first used):

var minWidthForVideo = parseInt(el.attr('data-min-width-for-video')) || null;
var imageMode = $isMobile;
var windowWidth = $(window).width();
if (minWidthForVideo && windowWidth < minWidthForVideo) {
@slavafomin
slavafomin / docker-cheat-sheet.md
Created April 17, 2017 21:19
Docker Cheat Sheet

Docker Cheat Sheet

Open shell inside of the running container

docker exec -t -i container-name /bin/bash

Use /bin/sh if your Docker image doesn't has bash (e.g. Alpine).

@slavafomin
slavafomin / git-submodules.md
Last active February 19, 2025 03:15
Git submodules best practices

Git submodules best practices

Useful commands

— Clone repository with submodules automatically:

git clone --recursive [email protected]:name/repo.git

— Initialize submodules after regular cloning:

@slavafomin
slavafomin / 0-README.md
Last active March 15, 2023 13:35
Angular 2 match other field validator / Password match validator

Angular 2 match other field validator

This custom validator for Angular 4 allows you to have fields that must be equal to some other fields. Such validator is very useful for password confirmation validation, for example.

Besides checking if two values are matching, it also subscribes to changes from other control and re-validates when either of two controls is updated.

Usage

@slavafomin
slavafomin / npm5-vs-yarn.md
Last active May 17, 2018 08:50
npm 5 vs yarn

npm 5 vs yarn

Looks like npm decided to stand up to yarn by releasing npm version 5, which is announced to be 5 times faster than previous version of npm.

I've decided to test it in one of my projects, the results are below:

Performance Benchmark

@kellyrmilligan
kellyrmilligan / s3Sync.sh
Created June 8, 2017 13:38
Sync files to s3 and set cache control headers
#!/bin/bash
if [[ "$1" != "" ]]; then
S3BUCKETNAME="$1"
else
echo ERROR: Failed to supply S3 bucket name
exit 1
fi
aws s3 sync build s3://$S3BUCKETNAME --delete --cache-control max-age=31536000,public
@bradwestfall
bradwestfall / S3-Static-Sites.md
Last active July 17, 2025 09:01
Use S3 and CloudFront to host Static Single Page Apps (SPAs) with HTTPs and www-redirects. Also covers deployments.

S3 Static Sites

⚠ This post is fairly old. I don't keep it up to date. Be sure to see comments where some people have posted updates

What this will cover

  • Host a static website at S3
  • Redirect www.website.com to website.com
  • Website can be an SPA (requiring all requests to return index.html)
  • Free AWS SSL certs
  • Deployment with CDN invalidation
@mort3za
mort3za / git-auto-sign-commits.sh
Last active September 5, 2025 05:27
Auto sign your git commits
# Generate a new pgp key: (better to use gpg2 instead of gpg in all below commands)
gpg --gen-key
# maybe you need some random work in your OS to generate a key. so run this command: `find ./* /home/username -type d | xargs grep some_random_string > /dev/null`
# check current keys:
gpg --list-secret-keys --keyid-format LONG
# See your gpg public key:
gpg --armor --export YOUR_KEY_ID
# YOUR_KEY_ID is the hash in front of `sec` in previous command. (for example sec 4096R/234FAA343232333 => key id is: 234FAA343232333)