Skip to content

Instantly share code, notes, and snippets.

View MakStashkevich's full-sized avatar
🍀
believe on the best

Maksim Stashkevich MakStashkevich

🍀
believe on the best
View GitHub Profile
@MakStashkevich
MakStashkevich / setup-swap.sh
Created January 29, 2026 11:24
Setup Swap RAM for VPS
#!/usr/bin/env bash
set -e
### === НАСТРОЙКИ ===
SWAP_SIZE_GB=4 # размер swap в ГБ
SWAP_FILE="/swapfile"
SWAPPINESS=10 # 0–100
### =================
@MakStashkevich
MakStashkevich / telegram_web_app_bot_validate_hash.php
Created May 12, 2022 16:21
Telegram Web App Bot (Validate hash) on PHP
<?php
$bot_token = '0123456789:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX';
$data_check_string = 'XXX'; // get from Telegram.WebAppData
$data_check_arr = explode('&', rawurldecode($data_check_string));
$needle = 'hash=';
$check_hash = FALSE;
foreach($data_check_arr AS &$val){
@MakStashkevich
MakStashkevich / build.sh
Last active October 20, 2025 10:06
Сборка и запуск TShock Terraria сервера на macOS ARM
#!/bin/bash
# Путь к корню проекта TShockLauncher (где TShockLauncher.csproj)
PROJECT_DIR="/Users/makstashkevich/Documents/TShock/TShockLauncher"
# Переходим в директорию проекта
cd "$PROJECT_DIR" || { echo "Не удалось перейти в директорию $PROJECT_DIR"; exit 1; }
echo "Сборка TShock..."
(для Debian пути и команды могут отличаться)
sudo apt-get --purge remove mariadb*
sudo apt-get autoremove
sudo apt-get autoclean
если возникают ошибки при удалении -
заходим в папку /var/lib/dpkg/info
и удаляем там всё что начинается на mariadb и на mysql
повторяем предыдущие три команды
@MakStashkevich
MakStashkevich / standalone_nextjs15_nginx.conf
Last active May 13, 2025 12:11
Standalone Next.js 15+ configuration file for nginx proxy. / Standalone Next.js 15+ версии конфигурация для прокси-сервера nginx
map $http_upgrade $connection_upgrade {
default upgrade;
'' close;
}
# Сервер для HTTP (редирект на HTTPS)
server {
listen 80;
listen [::]:80; # Поддержка IPv6
server_name www.site.com site.com;
@MakStashkevich
MakStashkevich / telegram_web_app_bot_validate_hash.js
Last active April 22, 2025 02:36
Telegram Web App Bot (Validate hash function) on Javascript (JS or NodeJs)
// Bot token
const bot_token = '0123456789:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX';
// https://core.telegram.org/bots/webapps#validating-data-received-via-the-web-app
function isValidHash() {
// Parse query data
const parsedData = Telegram.Utils.urlParseQueryString(Telegram.WebApp.initData)
// Get Telegram hash
const hash = parsedData.hash
/**
* Checks if the specified Web Storage API exists and is accessible
* @param storage - Web Storage API
* @returns true, if the Web Storage API is accessible
*/
const isStorageEnabled = (storage?: Storage): storage is Storage => {
if (!storage) return false;
try {
const key = `__storage__test`;
storage.setItem(key, '');
@MakStashkevich
MakStashkevich / __root_folder.md
Created January 3, 2023 10:39
Dynamic header title & meta tags on NextJs 13
app/
- head.tsx
- layout.tsx
- page.tsx
- blog/[slug]/page.tsx
<?php
/**
* Multibyte String Pad
*
* Functionally, the equivalent of the standard str_pad function, but is capable of successfully padding multibyte strings.
*
* @param string $input The string to be padded.
* @param int $pad_length The length of the resultant padded string.
* @param string $pad_string The string to use as padding. Defaults to space.
@MakStashkevich
MakStashkevich / es5.js
Created January 29, 2023 17:08 — forked from danieliser/es5.js
Convert Hex Color to rgba with opacity
/**
* ECMA2015
*/
function convertHex(hexCode, opacity = 1){
var hex = hexCode.replace('#', '');
if (hex.length === 3) {
hex = hex[0] + hex[0] + hex[1] + hex[1] + hex[2] + hex[2];
}