Skip to content

Instantly share code, notes, and snippets.

View Git-I985's full-sized avatar
Focusing

Edward Konovalov Git-I985

Focusing
View GitHub Profile
# step 1. find all uncommitted/changed images in sources dir and copy them to the buffer dir
for file in $(git status -s | cut -c4- | grep .png)
do
echo $file;
mkdir -p "./to_optimize/$(dirname $file)";
cp $file "./to_optimize/$file";
done
# step 2. optimize files in buffer dir by some third party service
#!/bin/bash
set -e
input_folder="./figma_export"
temp_export_folder="$(pwd)/temp_export"
export_zip_file_name="assets-icons-$(date +"%d-%m-%Y").zip"
assets_list_path=""
printf '\n'
echo 'Processing figma exported assets icons for AWS upload'
@Git-I985
Git-I985 / bubble-sort.js
Last active July 16, 2023 16:33
bubble-sort-js
const stdout = {
template: (val) => `\x1b[${val}m`,
reset: () => stdout.template(0),
cyanBright: (value) => stdout.template(96) + value + stdout.template(39) + stdout.reset(),
yellowBright: (value) => stdout.template(93) + value + stdout.template(39) + stdout.reset(),
redBright: (value) => stdout.template(91) + value + stdout.template(39) + stdout.reset(),
greenBright: (value) => stdout.template(92) + value + stdout.template(39) + stdout.reset(),
gray: (value) => stdout.template(30) + value + stdout.template(89) + stdout.reset(),
bold: (value) => stdout.template(1) + value + stdout.template(22) + stdout.reset(),
dim: (value) => stdout.template(2) + value + stdout.template(22) + stdout.reset(),
const getQueryParams = (str) => Object.fromEntries(Array.from(str.matchAll(/(?:([^?=&]+)=([^=&]+))/gm)).map(([_, param, value]) => [decodeURIComponent(param), decodeURIComponent(value)]))
@Git-I985
Git-I985 / phonebook-binary-search.js
Created July 7, 2023 19:16
phonebook binary search js
// binary search by key
const binarySearch = (phonebook, searchName) => {
if(phonebook.length === 0) {
return 'Phonebook is empty!'
}
let left = 0
let right = phonebook.length - 1
while(left <= right) {
@Git-I985
Git-I985 / compare-file-sizes.js
Last active May 20, 2023 21:48
compare-file-sizes-node
const getFileSize = async (file) => (await fs.stat(file)).size
const compareFileSizes = async (filepath1, filepath2, cb) => {
try {
// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise#promise_concurrency
const [fsize1, fsize2] = await Promise.all([
getFileSize(filepath1),
getFileSize(filepath2)
])
cb(null, Math.sign(fsize1 - fsize2))
@Git-I985
Git-I985 / finite-state-machine.js
Created May 20, 2023 15:01
finite state machine
const States = {
NEWLINE: 'NEWLINE',
WRITING: 'WRITING',
LINE_COMPLETE: 'LINE_COMPLETE',
}
const NEWLINE_CHAR = '\n'
const SPACE_CHAR = ' '
const lexer = (str) => {
@Git-I985
Git-I985 / dollarPrices.ts
Last active May 19, 2023 13:23
Dollar Prices
/*
from: [
"$7 000",
"$7000",
"$70.002",
"7000 $",
"7% test, test to $7 000",
"7% test, test to $7000",
"7% test, test to 7000$",
@Git-I985
Git-I985 / popover.ts
Created May 5, 2023 13:41
Popover feature TypeScript
export enum PopoverPositionType {
VERTICAL,
HORIZONTAL,
}
/**
* @param {Element|String} value
* @returns {Element}
*/
export const getHTMLElementFromArgument = (value): Element => {