Skip to content

Instantly share code, notes, and snippets.

View dusekdan's full-sized avatar
🟠
MIA

Daniel Dusek dusekdan

🟠
MIA
View GitHub Profile
@dusekdan
dusekdan / window_helper.py
Created March 15, 2019 16:59
Snippet of python code to help working with Windows under win32gui.
import win32gui
import re
class WindowMgr:
"""Encapsulates some calls to the winapi for window management"""
def __init__ (self):
"""Constructor"""
self._handle = None
@dusekdan
dusekdan / user.script.js
Last active March 18, 2024 13:59
YoutubeShortsRemover for desktop front page
// ==UserScript==
// @name YoutubeShortsRemover
// @match https://youtube.com/*
// @match https://www.youtube.com/*
// @match https://*.youtube.com/*
// @version 0.1
// @author Daniel Dusek (github: dusekdan)
// @grant none
// ==/UserScript==
@dusekdan
dusekdan / README.md
Last active December 28, 2023 12:46
Simple HTTPS Server in Python for quick testing

Simple HTTPS Server in Python for quick testing

We got used to running python -m http.server command to quickly spin up a local http server that we could grab some files over. A lot of use cases these days require HTTPS to be used, however, so some of the quick and dirty testing operations now turn a bit more painful. This is a ready-made script that spins up a simple http server with SSL/TLS on, using the self-signed certificate.

If file cert.pem is not detected, script will try to create it during startup. It will contain both certificate and private key, and the private key is not passphrase protected. While it is acceptable for testing locally quickly, it is completely unreasonable and unacceptable for anything even remotely exposed to real life scenarios.

If you wan't to generate your own own cert.pem, or need to regenerate the new one (default expiration is set to 365 days), run the following command:

openssl req -newkey rsa:2048 -x509 -days 365 -nodes -out cert.pem -keyout cert.pem
@dusekdan
dusekdan / scrape-quotes.py
Created August 1, 2021 09:58
Small script to scrape quotes from azquotes.com
import json
import logging as LOG
import requests
from bs4 import BeautifulSoup
LOG.basicConfig(level=LOG.INFO)
QUOTES_BASE_URL = 'https://www.azquotes.com/top_quotes.html?p='
OUTPUT_FILE = 'quotes-better.json'
<?php
header('X-XSS-Protection: 1; mode=block');
header('X-Content-Type: nosniff');
header('X-Frame-Options: DENY');
// If you have sensitive information in any of your URLS, use 'no-referrer' as a value instead)
header('Referrer-Policy: no-referrer-when-downgrade');
?>
<?php
namespace App\Http\Middleware;
use Closure;
class SecureHeaders
{
// Enumerate headers which you do not want in your application's responses.
// Great starting point would be to go check out @Scott_Helme's:
// https://securityheaders.com/
private $unwantedHeaderList = [
@dusekdan
dusekdan / Parenthesis-String-Validator.py
Created June 26, 2022 18:22
Implement a function that validates whether given bracket-string (both single-type and multiple-type) is valid.
"""Implement function(s) to validate whether specified bracket string is valid.
For a string to be valid, it has to have the same amount of the brackets of the
same type (naive, simple implementation) and these bracket types cannot cross
(complex string/implementation) - just like they couldn't in a math. equation.
Solution to this exercise typically uses stack and pushes symbols onto it as
they are read, and pops them from its top as their counter parts are read.
"""
@dusekdan
dusekdan / message_sender.py
Created March 15, 2019 20:26
Sending Messages to Game Windows Through DirectInput and Win32API
import os
import ctypes
import win32api
w = WindowMgr()
PUL = ctypes.POINTER(ctypes.c_ulong)
class KeyBdInput(ctypes.Structure):
_fields_ = [("wVk", ctypes.c_ushort),
("wScan", ctypes.c_ushort),
@dusekdan
dusekdan / XPath selector - All URLs from HTML attributes
Last active November 22, 2021 12:52
Extracts URLs from HTML attributes with type of URI.
-- When fed to XPath selects all URLs from HTML document
-- from within HTML attributes designated to hold URL
-- One-line version
"//a/@href | //applet/@codebase | //area/@href | //base/@href | //blockquote/@cite | //body/@background | //del/@cite | //form/@action | //frame/@src | //frame/@longdesc | //head/@profile | //iframe/@longdesc | //iframe/@url | //img/@longdesc | //img/@usemap | //input/@src | //input/@usemap | //ins/@cite | //object/@classid | //object/@codebase | //object/@data | //object/@usemap | //q/@cite | //img/@src | //link/@href | //source/@src | //embed/@src | //script/@src | //audio/@src | //button/@formaction | //command/@icon | //html/@manifest | //input/@formaction | //video/@poster | //video/@src"
-- Multi-line version (readable)
"//a/@href
| //applet/@codebase
| //area/@href
| //base/@href
@dusekdan
dusekdan / README.md
Last active February 17, 2020 05:03
Resume Browser Work from File

Why and What?

When I am working on something that I know I will get back to in a while and have to switch context (sometimes even a machine and an environment), I want to save all the relevant opened tabs from my browser to reopen them later. Ideally, I would like to avoid saving them to my bookmarks and rather save them together with a project (context) I was working on.

Before I wrote this small utility, I used to store the links in markdown format as a list with description of what I can find under given links. That was rather impractical and took a long time to initially write down, and also open later on.

With the utility, I can now save the links into the sources.txt file, one link per line. Then I just check-in the file together with the project into the VCS. When the time comes to start where I left of, I just run python resume.work.from.file path/to/directory/with/sources.txt/file and it opens all the tabs in my default browser.