Skip to content

Instantly share code, notes, and snippets.

View dstd's full-sized avatar

Denis Stanishevsky dstd

View GitHub Profile
@dstd
dstd / pingavail.sh
Created February 11, 2022 21:53
Utility to monitor host availability changes by ping, with timestamps and durations
#!/bin/bash -l
# Utility to monitor host availability changes by ping, with timestamps and durations
HOST="$1"
ONLINE_INTERVAL=5
OFFLINE_INTERVAL=1
TIMEOUT=500
if [ "x$HOST" == "x" ]; then
echo "usage: $(basename "$0") host"
exit
@dstd
dstd / input_source_switch.json
Last active November 30, 2020 22:28
Input language switching mods for Karabiner
{
"title":"Input source change",
"rules": [
{
"description": "If pressed alone, CmdL for English, CmdR for Russian",
"manipulators": [
{
"from": {
"key_code": "left_command",
"modifiers": {"optional": ["any"]}
@dstd
dstd / git_find_file_in_history.sh
Created January 30, 2019 11:23
Find specific file in GIT history
#!/usr/bin/env bash
# Find specific file in GIT history
if [ "$1" = "" ]; then
echo "Usage: ./$(basename ${0}) file" && exit 1
fi
_file=$1
blob=`git hash-object $_file`
@dstd
dstd / customrules.js
Created February 27, 2018 13:07
[Fiddler] JSON response modification
// ...
static function OnBeforeResponse(oSession: Session) {
// ...
if (oSession.uriContains("/someMethod")) {
var json = Fiddler.WebFormats.JSON.JsonDecode(oSession.GetResponseBodyAsString()).JSONObject;
var p = json["field"]["subfield"]["subsubfield"];
p["field1"] = 0 != 1;
p["anotherfield2"] = 0 != 0;
p["yaf3"] = 0 != 1;
@dstd
dstd / customrules.js
Last active February 27, 2018 13:02
[Fiddler] Sessions coloring
// ...
static function OnBeforeRequest(oSession: Session) {
// ...
var clientColors = ["red", "blue", "green", "gold", "orange", "purple"];
var clientId = oSession.oRequest.headers["User-Agent"] + oSession.oRequest.headers["Authorization"];
oSession["ui-color"] = clientColors[Math.abs(clientId.GetHashCode()) % clientColors.length];
// ...
}
// ...
@dstd
dstd / get_path_true_case.sh
Created February 2, 2017 21:20
Bash function to get correctly-cased path from case insensitive value
get_path_true_case()
{
local C_PATH="/"
local C=""
local OLD_IFS="$IFS"
IFS=/
for C in $1; do
if [ "$C_PATH" = "/" ]; then
C_PATH=`find "$C_PATH" -maxdepth 1 -type d -ipath "$C_PATH$C"`
else
@dstd
dstd / DownloadTaskRequest.kt.diff
Last active February 19, 2020 17:46
[Fuel library] patch to support payload streaming in uploading/downloading
diff --git a/kittinunf/fuel/core/requests/DownloadTaskRequest.kt b/kittinunf/fuel/core/requests/DownloadTaskRequest.kt
index d64d331..adfab9b 100755
--- a/kittinunf/fuel/core/requests/DownloadTaskRequest.kt
+++ b/kittinunf/fuel/core/requests/DownloadTaskRequest.kt
@@ -11,8 +11,8 @@ import java.net.URL
class DownloadTaskRequest(request: Request) : TaskRequest(request) {
- val BUFFER_SIZE = 1024
-
- var progressCallback: ((Long, Long) -> Unit)? = null
- lateinit var destinationCallback: ((Response, URL) -> File)
@file:Suppress("UNUSED_PARAMETER", "NOTHING_TO_INLINE") // it's a stub for ConnectionInspector so just suppress the warnings
import java.io.IOException
import java.io.InputStream
import java.net.HttpURLConnection
class ConnectionInspector(friendlyName: String?) {
inline fun preConnect(connection: HttpURLConnection, requestEntity: ByteArray?) = Unit
inline fun postConnect() = Unit
inline fun interpretResponseStream(responseStream: InputStream?): InputStream? = responseStream
@dstd
dstd / KeyEventHook.kt
Last active June 22, 2016 22:58
KeyEvents interception made via window.callback swizzling
class KeyEventHook private constructor(
private val window: Window,
private val handleKeyEvent: (KeyEvent) -> Boolean,
private var originalCallback: Window.Callback)
: Window.Callback by originalCallback
{
override fun dispatchKeyEvent(event: KeyEvent): Boolean {
if (handleKeyEvent(event))
return true
return originalCallback.dispatchKeyEvent(event)
@dstd
dstd / Progressive image loading for iOS
Created March 10, 2016 22:37 — forked from foundry/Progressive image loading for iOS
Progressive image loading for iOS. This is a GIST - detailed implementation is left as an exercise for the reader.
/*
typical usage (FYImageStore is a singleton)
[[FYImageStore instance] retrieveFullsizeImageFromPath:path
completion:^(UIImage* image){
self.imageView.image = image
}];
*/
#import "FYImageURL.h" //URL-building utilities, omitted from this Gist.