Skip to content

Instantly share code, notes, and snippets.

@vyachin
vyachin / gist:a159cd8da88b453cc9a71457f69e0415
Created February 25, 2026 07:40
Заглушки изображений для макетов, которые выглядят аккуратно
В рамках проекта понадобились изображения-заглушки для макетов страниц.
Сервис Placehold.io сейчас недоступен без VPN, поэтому я сделал собственную альтернативу — https://moqimg.ru
Сервис поддерживает три параметра:
- Ширина — от 10 до 4000 px (обязательный параметр)
- Высота — от 10 до 4000 px (необязательный; если не указана, используется квадрат)
- Формат — png, jpeg, webp, avif, gif (необязательный; по умолчанию используется png)
Шаблон URL
https://moqimg.ru/{ширина}x{высота}.{формат}
@vyachin
vyachin / main.go
Last active August 11, 2025 13:40
golang web server with graceful shutdown and recovery after panic
package main
import (
"context"
"log"
"net/http"
"os/signal"
"runtime/debug"
"syscall"
@vyachin
vyachin / my.sql
Created April 8, 2025 23:37
mysql json table extract
select distinct contacts.value
from club,
json_table(contacts, '$[*]' COLUMNS (
type VARCHAR(255) PATH '$.type',
value VARCHAR(255) PATH '$.value'
)
) contacts
where contacts.type = 'email'
@vyachin
vyachin / main.go
Created April 5, 2025 20:04
golfing mass photo renamer
package main
import (
"errors"
"fmt"
"github.com/rwcarlsen/goexif/exif"
"io/fs"
"log"
"os"
"path/filepath"
@vyachin
vyachin / MainActivity.kt
Created November 29, 2024 15:55
Jetpack compose navigation with login screen
package com.example.myapplication
import android.os.Bundle
import androidx.activity.ComponentActivity
import androidx.activity.compose.setContent
import androidx.activity.enableEdgeToEdge
import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.material3.Button
import androidx.compose.material3.Text
@vyachin
vyachin / MainActivity.kt
Created November 26, 2024 19:46
Jetpack compose condition navigation
package com.example.myapplication
import android.os.Bundle
import androidx.activity.ComponentActivity
import androidx.activity.compose.setContent
import androidx.activity.enableEdgeToEdge
import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.foundation.layout.padding
import androidx.compose.material3.Button
@vyachin
vyachin / MainActivity.kt
Created October 27, 2024 12:15
Jetpack compose view model
package com.example.myapplication
import android.os.Bundle
import androidx.activity.ComponentActivity
import androidx.activity.compose.setContent
import androidx.activity.enableEdgeToEdge
import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.padding
import androidx.compose.material3.Button
import androidx.compose.material3.Scaffold
@vyachin
vyachin / MainActivity.kt
Last active October 27, 2024 12:57
Jetpack Compose Navigation example
package com.example.app
import android.os.Bundle
import androidx.activity.ComponentActivity
import androidx.activity.compose.setContent
import androidx.activity.enableEdgeToEdge
import androidx.compose.foundation.layout.padding
import androidx.compose.material3.Button
import androidx.compose.material3.Scaffold
import androidx.compose.material3.Text
@vyachin
vyachin / main.dart
Created October 27, 2021 21:33
flutter bottom sheet
import 'package:flutter/material.dart';
void main() {
runApp(
MaterialApp(
home: Scaffold(
body: Builder(
builder: (BuildContext context) {
final size = MediaQuery.of(context).size;
return Stack(
@vyachin
vyachin / gist:7ed736a499434d77fbf93e1c7401e6bf
Last active August 5, 2022 09:34
Загрузка файла на сервер, средствами 1С
&НаСервере
Функция ПодключитьсяКHTTPСерверу(Организация) Экспорт
Результат = ПолучитьДанныеПодключения(Организация, Перечисления.РИТ_ВидПодключения.HTTP);
Если Результат.Порт = "" Тогда
Порт = 0;
Иначе
Порт = Число(Результат.Порт);
КонецЕсли;