Skip to content

Instantly share code, notes, and snippets.

@SCP002
SCP002 / process_new_console_example.rs
Created November 29, 2023 18:48
Rust: Start windows process in new console using CREATE_NEW_CONSOLE creation flag.
// Add to your Cargo.toml:
// [dependencies]
// subprocess = { version = "0.2.10", git = "https://github.com/SCP002/rust-subprocess.git" }
use subprocess::Exec;
fn main() {
let exit_status = Exec::cmd("my-executable-name")
.arg("arg1")
.creation_flags(0x00000010) // CREATE_NEW_CONSOLE
@SCP002
SCP002 / process_example.rs
Created November 29, 2023 18:34
Rust: Start process. Keep StdOut and StdErr in the original order. Display output real time character by character. Capture output on exit.
// Add to your Cargo.toml:
// [dependencies]
// utf8-chars = "1.0.0"
// subprocess = { version = "0.2.10", git = "https://github.com/SCP002/rust-subprocess.git" }
use std::io;
use std::io::BufReader;
use std::io::Write;
use subprocess::Exec;
use subprocess::ExitStatus;
@SCP002
SCP002 / filter.rs
Last active November 27, 2023 08:12
Rust: concurrent filter example. Keeps empty elements and original order. Using thread pool.
// Add to your Cargo.toml:
// [dependencies]
// rayon = "1.1"
use rayon::prelude::*;
use rayon::ThreadPoolBuilder;
use std::thread;
use std::time::{Duration, Instant};
fn main() {
@SCP002
SCP002 / json.rs
Last active November 24, 2023 12:43
Rust: Serialize & Deserialize partially known / dynamic JSON. Using structs (type safe).
// Add to your Cargo.toml:
// [dependencies]
// serde = { version = "1.0.193", features = ["derive"] }
// serde_json = "1.0.108"
use serde::{Deserialize, Serialize};
use serde_json::{Map, Value};
#[derive(Serialize, Deserialize)]
struct TopStruct {
@SCP002
SCP002 / setup.sh
Created July 18, 2023 02:08
Example of running two Cesbo Astra instances on two different ports as systemctl services.
# write systemd config for the first instance
sudo tee /lib/systemd/system/astra-8000.service > /dev/null << ENDSEQ
[Unit]
Description=Astra 8000 service (%N)
After=network-online.target
StartLimitBurst=5
StartLimitIntervalSec=10
[Service]
Type=simple
@SCP002
SCP002 / err.go
Last active December 1, 2023 19:56
Golang: Run both HTTP and HTTPS server with dummy TLS certificates for testing. Network error classifier included.
package main
import (
"errors"
"net"
"net/url"
"syscall"
)
// ErrType represents network error type
@SCP002
SCP002 / write_to_stdin_posix.go
Last active March 15, 2022 22:00
Golang: Write a message to any console's input on POSIX.
// Used in https://github.com/SCP002/terminator.
// For Windows, see: https://gist.github.com/SCP002/1b7fd91a519a2dc60fc5b179f90472b6.
package main
import (
"fmt"
"os"
"syscall"
"unsafe"
@SCP002
SCP002 / disable-windows-10-updates.reg
Last active June 19, 2021 18:58
Windows Registry: Disable Windows 10 updates.
Windows Registry Editor Version 5.00
; Disable Windows 10 updates.
; To enable it back, delete these values.
; Tested with Windows 10 Pro 20H2, build 19042.1052
[HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate]
"DoNotConnectToWindowsUpdateInternetLocations"=dword:00000001
@SCP002
SCP002 / get_process_tree.go
Last active March 15, 2022 22:01
Golang: Get all descendants of the specified process.
// Used in https://github.com/SCP002/terminator.
package main
import (
"fmt"
"github.com/shirou/gopsutil/process"
)
@SCP002
SCP002 / init_console_handlers_windows.go
Last active November 1, 2022 20:42
Golang: Initialize console handlers after AttachConsole or AllocConsole on Windows.
// Used in https://github.com/SCP002/terminator.
package main
import (
"errors"
"os"
"golang.org/x/sys/windows"
)