Skip to content

Instantly share code, notes, and snippets.

View fgimian's full-sized avatar

Fotis Gimian fgimian

View GitHub Profile
@fgimian
fgimian / virtualenvwrapper_autoswitch.sh
Created August 4, 2015 13:42
Automatic virtualenv switching for virtualenvwrapper
# Automatic activation and deactivation of virtualenvs using virtualenvwrapper
# whereby the virtualenv name must match the current directory name
function cd
{
# Perform the regular cd
builtin cd "$@"
# Iterate through the current directory, heading into each parent directory
# until we find a .virtualenv file or land in the top directory (/)
test_directory=$(pwd)
@fgimian
fgimian / terminal.js
Last active June 16, 2016 22:55
Setting up the Terminal with JavaScript on OS X Yosemite
#!/usr/bin/env osascript -l JavaScript
function run(argv) {
// Obtain the terminal application
terminal = Application('Terminal');
// Set the font
terminal.defaultSettings.fontName = 'Source Code Pro for Powerline';
terminal.defaultSettings.fontSize = 18;
terminal.defaultSettings.fontAntialiasing = true;
#!/usr/bin/env python
from __future__ import print_function
from glob import glob
import multiprocessing
import os
import signal
import subprocess
import sys
@fgimian
fgimian / test-ping.sh
Last active November 21, 2016 08:16
A simple little script to run on macOS to test stability of your internet connection
#!/bin/bash
# Set the destination IP or hostname to ping
DESTINATION=8.8.8.9
# Ping the endpoint and write an error to a log file if the ping fails 5 times consecutively
FAILURE_COUNT=0
while true
do
ping -c 1 -t 1 $DESTINATION > /dev/null 2>&1
import math
import sys
import time
# Colours
BOLD = '\033[1m'
RED = '\033[91m'
GREEN = '\033[92m'
YELLOW = '\033[93m'
---
# Ensure very detailed checking with no exclusions
strictness: veryhigh
doc-warnings: true
member-warnings: true
test-warnings: true
# Set maximum line length across linters to the agreed length
max-line-length: 100
@fgimian
fgimian / custom_tag_handler.cr
Created May 28, 2018 10:22
The following Crystal code attempts to implement custom YAML tag processing
require "yaml"
# The default representation of null values in Crystal is an empty value which while valid
# (see http://yaml.org/type/null.html) but is less familiar and clear to me, use the string
# "null" instead
struct Nil
def to_yaml(yaml : YAML::Nodes::Builder)
yaml.scalar "null"
end
end
@fgimian
fgimian / slack_delete.rb
Created May 30, 2018 00:39 — forked from jamescmartinez/slack_delete.rb
This Ruby script will bulk remove all Slack files older than 30 days. Just add your API token from https://api.slack.com/web#authentication into the token quotes at the top of the file.
require 'net/http'
require 'json'
require 'uri'
@token = ''
def list_files(days)
params = {
token: @token,
ts_to: (Time.now - days * 24 * 60 * 60).to_i,
#!/usr/bin/env python3
"""
Trash Locations shows you all deleted files and their original location (sorted by original
location).
To run this script, you'll first need to install Python 3.6 or later and run:
pip3 install ds_store
Developed by Fotis Gimian (MIT license).
@fgimian
fgimian / parameter-issue.ps1
Created June 5, 2019 01:55
How can I allow parameter sets to be optional? :)
function Install-File {
[CmdletBinding()]
param (
[Parameter(Mandatory=$true, Position=0)][string]$Path,
[Parameter(ParameterSetName='SourcePath')][string]$SourcePath,
[Parameter(ParameterSetName='Content')][string]$Content,
[Parameter(ParameterSetName='DownloadUrl')][string]$DownloadUrl
)
# ...