Skip to content

Instantly share code, notes, and snippets.

View basilevs's full-sized avatar

Vasili Gulevich basilevs

View GitHub Profile
@basilevs
basilevs / ExclusiveRunnerMutex.java
Created July 27, 2021 08:47
Locking implementation
import java.util.Objects;
/** Executes a runnable as a critical section but without any blocking.
* Number of executions is not guaranteed to match a number of invocations.
* Last invocation happens-before last execution.
*
* **/
public final class ExclusiveRunner implements Runnable {
private final Runnable delegate;
private final Object lock = new Object();
@basilevs
basilevs / ExclusiveRunner.java
Created July 27, 2021 08:15
Explain concurrency error
import java.util.Objects;
import java.util.concurrent.Semaphore;
import java.util.concurrent.atomic.AtomicBoolean;
/** Executes a runnable as a critical section but without any blocking.
* Number of executions is not guaranteed to match a number of invocations.
* Last invocation happens-before last execution.
*
* **/
public final class ExclusiveRunner implements Runnable {
@basilevs
basilevs / download_build.py
Created July 3, 2021 18:06
Download and unzip a file via HTTP in Python with disconnect recovery
#!/usr/bin/python3
#from jenkins import Jenkins
#from os import environ
from tempfile import TemporaryFile, gettempdir
from os.path import join, exists
from zipfile import ZipFile
from requests import get
from pprint import pprint
@basilevs
basilevs / resetTouchpad.service
Created April 13, 2021 13:37
A systemd service to reset old Synaptic touchpads after suspend. Put in /etc/systemd/system/
[Unit]
Description=Reset touchpad after suspend
After=suspend.target
[Service]
User=root
Type=oneshot
ExecStart=modprobe -r psmouse ; modprobe psmouse
TimeoutSec=0
StandardOutput=syslog
@basilevs
basilevs / ProjectCopy.java
Created October 23, 2019 09:40
Dumb copy of a project from bundle resource to Eclipse workspace
public static void importProjectFromBundleResource(IWorkspace workspace, Bundle bundle, IPath projectPathInBundle) {
try {
URL descriptionUrl = bundle.getEntry(projectPathInBundle.append(".project").toPortableString());
IProjectDescription description;
try(InputStream descriptorStream = descriptionUrl.openStream()) {
description = workspace.loadProjectDescription(descriptorStream);
}
description.setLocationURI(null);
IProject project = workspace.getRoot().getProject(description.getName());
workspace.run(monitor -> {
@basilevs
basilevs / updateGerritChange.sh
Last active August 16, 2019 10:46
Updates an existing Gerrit change
#!/bin/bash
# updateGerritChange.sh
#
# Updates an existing Gerrit change for master branch with a state of current Git branch based on that change
#
# Allows to keep a history of changes for a Gerrit change in a local Git branch.
#
# Usage:
# git checkout master
@basilevs
basilevs / installlatest.cmd
Created August 6, 2015 06:58
Fetches a latest distiributive over SCP and runs it
set [email protected]
set REM_PATH=/mnt/data/distr
set NAME=
FOR /F "tokens=* USEBACKQ" %%F IN (`plink %HOST% "ls -rt %REM_PATH%/*.exe | tail -n 1 | cut
-d / -f 5"`) DO (
SET NAME=%%F
)
@basilevs
basilevs / Click to play
Created January 9, 2015 13:37
Skips ads
// ==UserScript==
// @name Click to play
// @namespace basilevs
// @description Skips legal warnings
// @include http://watch*series.*/open/cale/*
// @include http://daclips.in/*
// @version 1
// @grant GM_log
// ==/UserScript==
Thread [main] (Suspended)
owns: RunnableLock (id=223)
OS.SetWindowPos(int, int, int, int, int, int, int) line: not available [native method] [local variables unavailable]
TableColumn(Widget).SetWindowPos(int, int, int, int, int, int, int) line: 1457
TableColumn.pack() line: 449
MultiAutLaunchTab$1.controlResized(ControlEvent) line: 66
TypedListener.handleEvent(Event) line: 234
EventTable.sendEvent(Event) line: 84
Table(Widget).sendEvent(Event) line: 1053
Table(Widget).sendEvent(int, Event, boolean) line: 1077