Skip to content

Instantly share code, notes, and snippets.

View gorshkov-leonid's full-sized avatar

Leonid Gorshkov gorshkov-leonid

View GitHub Profile
  • Записки
    • Настройка VLAN под windows:
      1. Диспетчер устройств (devmgmt.msc)
      2. Сетевые адаптеры, выбрать нужный, свойств
      3. Дополнительно
      4. Свойства "VLAN ID": <число>
      5. Свойство "Packet priority & VLAN": отключить
      либо команда
@gorshkov-leonid
gorshkov-leonid / deep_research.rb
Created February 16, 2025 20:58 — forked from schappim/deep_research.rb
A recreation of OpenAI's Deep Research feature in Ruby
#!/usr/bin/env ruby
# deep_research.rb
require 'openai'
require 'json'
require 'net/http'
require 'uri'
require 'timeout'
require 'time'

Types

  • feat Commits, that adds or remove a new feature
  • fix Commits, that fixes a bug
  • refactor Commits, that rewrite/restructure your code, however does not change any API behaviour
  • perf Commits are special refactor commits, that improve performance
  • style Commits, that do not affect the meaning (white-space, formatting, missing semi-colons, etc)
  • test Commits, that add missing tests or correcting existing tests
  • docs Commits, that affect documentation only
  • build Commits, that affect build components like build tool, ci pipeline, dependencies, project version, ...
  • ops Commits, that affect operational components like infrastructure, deployment, backup, recovery, ...
@gorshkov-leonid
gorshkov-leonid / attiny_13_water_detector_sleep_mode.md
Last active February 5, 2025 21:40
attiny13 water detector sleep mode
#include <avr/interrupt.h>
#include <avr/io.h>
#include <util/delay.h>


#define F_CPU 128000UL
#define ledPin PB2

volatile bool inSleep = false;
@gorshkov-leonid
gorshkov-leonid / OpenAIRealtimeWebSocket.kt
Created November 19, 2024 06:28 — forked from paulotaylor/OpenAIRealtimeWebSocket.kt
Simple Kotlin OpenAI Websocket implementation of the Realtime API
import android.util.Log
import io.ktor.util.decodeBase64Bytes
import io.ktor.util.encodeBase64
import okhttp3.OkHttpClient
import okhttp3.Request
import okhttp3.Response
import okhttp3.WebSocket
import okhttp3.WebSocketListener
import okio.ByteString
import org.json.JSONArray
@gorshkov-leonid
gorshkov-leonid / chrome-tricks.md
Last active August 19, 2025 11:01
chrome-tricks.md
All chrome flags

google-chrome --js-flags="--help"

gorshkov@WS-17378:~$ google-chrome --js-flags="--help"
[0327/124948.926939:ERROR:directory_reader_posix.cc(42)] opendir /home/gorshkov/.config/google-chrome/Crash Reports/attachments/0838190e-f9da-4ff2-b373-7c37c4463645: No such file or directory (2)
[0327/124950.158365:ERROR:directory_reader_posix.cc(42)] opendir /home/gorshkov/.config/google-chrome/Crash Reports/attachments/6204a494-eeb7-4d7b-88cb-14de5d342e3b: No such file or directory (2)
@gorshkov-leonid
gorshkov-leonid / puppeteer-page-switching-to-try-avoid-freezing-tests-on-background-tabs.md
Last active August 19, 2025 11:06
puppeteer-page-switching-to-try-avoid-freezing-tests-on-background-tabs.md
await switchTabsPeriodically(headless, webSocketUri, puppeteerConfig);
fixme: failed variant but maybe it can be rethinked:
const puppeteer = require("puppeteer");
async function switchTabsPeriodically(headless, webSocketUri, puppeteerConfig) {
    // I recommend to run only one test in headless mode or use only one runner. Or else you would have the problem with hanged test on inactive tabs.
     if (!headless) {
         let browser = await puppeteer.connect({
@gorshkov-leonid
gorshkov-leonid / node-tricks.md
Last active August 19, 2025 11:00
node-tricks.md

Check memory:

# NODE_OPTIONS=--max-old-space-size=4096
# node --max-old-space-size=4096 memory.js
node --max-old-space-size=4096 -e "console.log(JSON.stringify(v8.getHeapStatistics()));"
node -e "console.log(JSON.stringify(require('os').freemem()));"
node -e "console.log(JSON.stringify(require('os').totalmem()));"

measure memory

@gorshkov-leonid
gorshkov-leonid / jq.md
Last active August 19, 2025 11:02
jq.md

sort array inside json

jq '.mainData.graph.nodes|=sort_by(.key.key)|.mainData.graph.links|=sort_by(.key.key)|.mainData.layout.identifiedConstraints|=sort_by(.key.key)|.associations|=sort_by(.key.key)' loadGraph.json > loadGraph1.json 

filter data

jq '.edgePositions | .[] | select( .key.key | contains("{\"content\":{\"class\":\"TransferableLinkKey\",\"key\":39,\"type\":\"UNDIRECTED_LINK\",\"sourceKey\":[\"java.math.BigInteger\",3],\"targetKey\":[\"java.math.BigInteger\",24]}}"))' request.json
@gorshkov-leonid
gorshkov-leonid / ffmpeg.md
Last active August 19, 2025 11:02
ffmpeg.md
  1. Remove fragment
ffmpeg -ss 00:00:00 -to 00:01:39 -i record.mkv -c copy x.mkv
ffmpeg -ss 00:01:54 -to 00:05:23 -i record.mkv -c copy y.mkv
echo file x.mkv > list2.txt
echo file y.mkv >> list2.txt
ffmpeg -f concat -i list2.txt -c copy output2.mkv
  1. Rotate