Skip to content

Instantly share code, notes, and snippets.

View khasky's full-sized avatar
💭
Находи в себе силы делать то, на что другие просто не способны.

Khasky khasky

💭
Находи в себе силы делать то, на что другие просто не способны.
View GitHub Profile
@khasky
khasky / useDirectionTransform.ts
Created April 8, 2026 06:38
useDirectionTransform React Hook
// Builds Theme UI `sx` transforms so a sticky/floating bar slides in on scroll-up or near the top
// and slides away on scroll-down; optional burger-menu attrs keep it visible while the menu is open.
import React from 'react';
import { BoxProps } from 'theme-ui';
import { useScrollDirection, ScrollDirection } from '@/hooks/useScrollDirection';
const SCROLL_Y_OFFSET_PX = 500;
interface DirectionTransformProps {
@khasky
khasky / useCursorEffect.ts
Created April 8, 2026 06:37
useCursorEffect React Hook
// On non-touch devices, adds a custom dual-layer cursor (ring + lagging dot with difference blend)
// that grows over links, buttons, and form controls.
import React from 'react';
export function useCursorEffect() {
React.useEffect(() => {
const isMobileDevice = () => {
return (
window.matchMedia('(pointer: coarse)').matches || /Mobi|Android/i.test(navigator.userAgent)
);
@khasky
khasky / useCopyright.ts
Created April 8, 2026 06:36
useCopyright React Hook
// On copy, rewrites clipboard text to append a random copyright line from the list (skips URLs, IP:port, and selections inside code/inputs).
import React from 'react';
import sample from 'lodash/sample';
const IP_ADDR_PORT_REGEX = /^(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}:\d{1,5})$/;
const URL_REGEX =
/(http(s)?:\/\/.)?(www\.)?[-a-zA-Z0-9@:%._\+~#=]{2,256}\.[a-z]{2,6}\b([-a-zA-Z0-9@:%_\+.~#?&//=]*)/g;
const isURL = (str: string) => URL_REGEX.test(str);
@khasky
khasky / useCallbackOnEscape.ts
Created April 8, 2026 06:35
useCallbackOnEscape React Hook
// Calls the given handler when the user presses Escape (keydown on document.body). Handy for closing modals, menus, and overlays.
import { useEffect } from 'react';
export const useCallbackOnEscape = (handleClose?: () => void) => {
useEffect(() => {
if (typeof handleClose === 'function') {
const closeOnEscapeKey = (e: KeyboardEvent) => (e.key === 'Escape' ? handleClose() : null);
document.body.addEventListener('keydown', closeOnEscapeKey);
return () => {
document.body.removeEventListener('keydown', closeOnEscapeKey);
@khasky
khasky / useActiveAnchor.ts
Created April 8, 2026 06:34
useActiveAnchor React Hook
// Tracks which heading (by id) is most visible in the viewport via IntersectionObserver.
import { useEffect, useRef, useState } from 'react';
interface UseIntersectionOptions {
root?: HTMLElement | null;
rootMargin?: string;
threshold?: number | number[];
}
export const useActiveAnchor = (ids: string[], options: UseIntersectionOptions = {}) => {
@khasky
khasky / fix.txt
Created April 8, 2026 06:21
Fix for "No supported authentication methods available"
1) Open TortoiseGit -> Settings -> Network
2) SSH Client -> change to "C:\Program Files\Git\usr\bin\ssh.exe" instead of "TortoiseGitPlink.exe"
@khasky
khasky / commit-msg
Created March 22, 2026 04:25
Removes "Made-with: Cursor" from commit message
#!/bin/sh
# .githooks/commit-msg
# Strip Cursor-injected footer from commit messages
msg="$1"
[ -z "$msg" ] || [ ! -f "$msg" ] && exit 0
tmp="${msg}.tmp"
sed '/Made-with: Cursor/d' "$msg" > "$tmp" && mv "$tmp" "$msg"
@khasky
khasky / rgbaToRgb.ts
Created June 2, 2021 17:01
TypeScript RGBA to RGB
interface RGBAtoRGBOptions {
toColorRGBA: string;
backgroundColorRGB?: string;
}
function rgbaToRgb({ toColorRGBA, backgroundColorRGB = 'rgb(255,255,255)' }: RGBAtoRGBOptions) {
const [r, g, b, a] = toColorRGBA
.replace(/rgba|\(|\)/g, '')
.split(',')
.map((str) => parseInt(str, 2));
@khasky
khasky / mysql-backup.sh
Last active February 21, 2021 19:26
Bash MySQL backup for all databases
#!/bin/bash
USER=root
PASSWORD=root
DATE_NOW="`date '+%Y-%m-%d_%H-%M-%S'`"
DIR=/var/local/backup
DATABASES=`mysql -u$USER -p$PASSWORD -e "SHOW DATABASES;" | tr -d "| " | grep -v Database`
echo "Databases found: $DATABASES"
@khasky
khasky / mysql-backup-tar-gz.sh
Last active February 21, 2021 19:25
Bash MySQL backup to tar.gz for single database
#!/bin/bash
MYSQL_USER=root
MYSQL_PASS=root
MYSQL_DB=test
BACKUP_DIR=/var/local/backup
LOGS_DIR=/var/log
# Equals to 3 last days