Skip to content

Instantly share code, notes, and snippets.

View fanurs's full-sized avatar
🇲🇾
:atom:

Fanurs fanurs

🇲🇾
:atom:
View GitHub Profile
@fanurs
fanurs / reinstall-vscode.sh
Last active February 9, 2024 17:03
How to reinstall VS Code remotely
# When to reinstall?
# - When VS Code cannot connect to remote server via the SSH extension
# - New extensions cannot be installed on remote server
# 1. Connect to remote server (without using VS Code, of course).
# 2. Remove the ~/.vscode-server directory
cd ~
rm -rf .vscode-server/
@fanurs
fanurs / export-vscode-code-command.sh
Created April 2, 2022 22:26
Exporting the `code` command of VS Code
# Sometimes when opening a remote terminal in VS Code,
# the command `code` is not found. In such case, we
# can simply add the corresponding directory within
# ~/.vscode-server/ to $PATH.
if ! command -v code &> /dev/null
then
hash_dir=`(cd ~/.vscode-server/bin && ls -trld * && cd ~-) | tail -n1 | awk '{print $NF}'`
export PATH=$PATH:$HOME/.vscode-server/bin/$hash_dir/bin/remote-cli
fi
@fanurs
fanurs / terminal-output-to-file.txt
Last active April 11, 2022 17:18
How to save terminal output to a file on Linux?
Please note that the n.e. in the syntax column means "not existing".
There is a way, but it's too complicated to fit into the column. You can find a helpful link in the List section about it.
|| visible in terminal || visible in file || existing
Syntax || StdOut | StdErr || StdOut | StdErr || file
==========++==========+==========++==========+==========++===========
> || no | yes || yes | no || overwrite
>> || no | yes || yes | no || append
|| | || | ||
2> || yes | no || no | yes || overwrite
@fanurs
fanurs / profiling_demo.py
Created May 17, 2022 01:15
Python profiling (cProfile, pstats, snakeviz)
import cProfile
import pstats
with cProfile.Profile() as pr:
routine_to_measure()
stats = pstats.Stats(pr)
stats.sort_stats(pstats.SortKey.TIME)
# print profiling result
# Method 1
@fanurs
fanurs / concurrent_futures_threadpoolexecutor.py
Created May 22, 2022 23:58
Demo: Download images from URLs using `ThreadPoolExecutor`
import concurrent.futures
import urllib
import numpy as np
links = {
'IU': 'https://upload.wikimedia.org/wikipedia/commons/thumb/3/33/IU_at_%22Midnight_Runners%22_VIP_premiere%2C_7_August_2017_03.jpg/800px-IU_at_%22Midnight_Runners%22_VIP_premiere%2C_7_August_2017_03.jpg',
'Stephen Curry': 'https://www.si.com/.image/ar_233:100%2Cc_fill%2Ccs_srgb%2Cg_faces:center%2Cq_auto:good%2Cw_1920/MTg4MDIzNjkxMDA5ODYxNDE4/stephen-curry-smiles-iso.webp',
'Syed Saddiq': 'https://media2.malaymail.com/uploads/articles/2018/2018-08/20180802YM21.jpg',
'Terence Tao': 'https://s3.amazonaws.com/cms.ipressroom.com/173/files/20147/53e288debd26f511d800600e_Terence_Tao/Terence_Tao_c4560e18-0bf8-4bab-8daa-7e74d3acf907-prv.jpg',
}
@fanurs
fanurs / mpl_legend_markers_only.py
Created May 31, 2022 12:15
Matplotlib legend: Remove error bars, show only marker symbols
import matplotlib as mpl
import matplotlib.pyplot as plt
# some pseudo-data (incomplete)
df1 = ...
df2 = ...
fig, ax = plt.subplots()
ax.errorbar(df1.x, df1.y, yerr=df1.yerr, label='df1')
ax.errorbar(df2.x, df2.y, yerr=df2.yerr, label='df2')
@fanurs
fanurs / pyserver
Created August 30, 2022 13:13
Serve HTTP server using Python3
#!/usr/bin/env python3
import argparse
import functools
import http.server
import threading
class ArgumentParser:
def __init__(self):
self.parser = argparse.ArgumentParser()
self.parser.add_argument("port", type=int, default=9090, help="port to listen on")
@fanurs
fanurs / scp-demo.sh
Last active June 22, 2023 11:51
Transferring files using scp
#!/bin/bash
#############################
# from "here" to "there"
#############################
scp source_files user@destination:/path/at/the/destination
# with jumphost
scp -o 'ProxyCommand ssh user@jumphost -W %h:%p' source_files user@destination:/path/at/the/destination
@fanurs
fanurs / ssh-with-jumphosts.sh
Created December 31, 2022 06:01
ssh with jumphosts
# SSH after version 7.5 provides ProxyJump (-J flag)
# name: your username in the remote server
# when using Windows PowerShell, you may need to replace "ssh" by "ssh.exe"
ssh -J name@intermediateserver name@remoteserver
# In the case of multiple intermediate hosts, simple join all of them with comma
ssh -J name@intermediate1,name@intermediate2,name@intermediate3 name@remoteserver
# SSH before version 7.5 would need to use ProxyCommand
ssh -o ProxyCommand="ssh -W %h:%p name@intermediateserver" name@remoteserver
gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.5 -dPDFSETTINGS=/default -dNOPAUSE -dQUIET -dBATCH -dDetectDuplicateImages -dCompressFonts=true -dDownsampleColorImages=true -dColorImageResolution=200 -dDownsampleGrayImages=true -dGrayImageResolution=250 -sOutputFile=compressed_main.pdf