Skip to content

Instantly share code, notes, and snippets.

@naranjja
naranjja / install.sh
Created November 16, 2018 01:12
Install ODBC Driver 17 for SQL Server on Ubuntu 18.04
sudo su
curl https://packages.microsoft.com/keys/microsoft.asc | apt-key add -
curl https://packages.microsoft.com/config/ubuntu/18.04/prod.list > /etc/apt/sources.list.d/mssql-release.list
sudo apt-get update
sudo ACCEPT_EULA=Y apt-get install msodbcsql17
sudo ACCEPT_EULA=Y apt-get install mssql-tools
echo 'export PATH="$PATH:/opt/mssql-tools/bin"' >> ~/.bash_profile
echo 'export PATH="$PATH:/opt/mssql-tools/bin"' >> ~/.bashrc
source ~/.bashrc
sudo apt-get install unixodbc unixodbc-dev
@naranjja
naranjja / .env
Created November 8, 2018 22:50
Google Analytics implementation using universal-analytics and Dialogflow
TRACKING_ID="UA-XXXXXXXX-Y"
@naranjja
naranjja / explode_array.py
Last active November 8, 2018 20:03
Explode an array using pandas
import pandas as pd
def explode_array(df, column_to_explode, axis=1, pop=False, keep=None):
new_cols = []
if axis == 0:
rows = np.repeat(range(df.shape[0]), df[column_to_explode].apply(len))
cols = [i for i, _ in enumerate(df.columns) if _ != column_to_explode]
new_df = df.iloc[rows, cols].copy()
new_df[column_to_explode] = [_ for row in df[column_to_explode] for _ in row]
new_cols.append(column_to_explode)
@naranjja
naranjja / find-remove.sh
Created November 7, 2018 17:29
Find and remove package from apt
# look for package
dpkg --get-selections | grep '<PACKAGE_NAME_SUBSTRING>'
# remove package
sudo apt-get --purge remove <FOUND_PACKAGE_NAME>
@naranjja
naranjja / alias.sh
Created October 24, 2018 16:53
Create alias in Linux
sudo nano ~/.bashrc
# add a line like this:
alias example='sudo apt-get update'
@naranjja
naranjja / copy.sh
Created October 11, 2018 00:53
Use gsutil to copy all files in folder to Cloud Storage without overwriting
gsutil -m cp -n * gs://path/to/folder
# -m: parallel job for multiple files
# -n: do not overwrite
@naranjja
naranjja / four.py
Created October 5, 2018 06:58
My Advent of Code solutions!
def validate(passphrase):
passphrase = passphrase.split(' ')
for word in passphrase:
if passphrase.count(word) > 1: return 0
return 1
def f(x):
y = 0
for passphrase in x:
y += validate(passphrase)
@naranjja
naranjja / select_svg.md
Created September 27, 2018 20:37
Select SVG using XPATH

SVG tags are in another namespace

  • /g becomes /*[name()="g"]
  • /svg becomes /*[name()="svg"]
  • /path becomes /*[name()="path"]

For example, using Selenium:

driver.find_element_by_xpath("//ul/li/svg")  # wrong
driver.find_element_by_xpath("./ul/li//*[name()='svg']" # right
@naranjja
naranjja / screenshot.sh
Last active October 24, 2018 17:01
Take screenshot of Android connected phone on *nix
adb exec-out screencap -p > ~/screenshots/filename.png
# with timestamp filename
adb exec-out screencap -p > ~/screenshots/$(date +%s).png
@naranjja
naranjja / remove_outliers.py
Created September 5, 2018 03:17
Remove outliers using Pandas
import pandas as pd
import numpy as np
def drop_outliers(df, field_name):
distance = 1.5 * (np.nanpercentile(df[field_name], 75) - np.nanpercentile(df[field_name], 25))
df.drop(df[df[field_name] > distance + np.nanpercentile(df[field_name], 75)].index, inplace=True)
df.drop(df[df[field_name] < np.nanpercentile(df[field_name], 25) - distance].index, inplace=True)
if __name__ == "__main__":
# assuming df exists and contains numeric variables