Skip to content

Instantly share code, notes, and snippets.

View vaibhavpandeyvpz's full-sized avatar
🐢
I may be slow to respond.

Vaibhav Pandey vaibhavpandeyvpz

🐢
I may be slow to respond.
View GitHub Profile
@vaibhavpandeyvpz
vaibhavpandeyvpz / useStatefulPromise.tsx
Created October 13, 2021 19:15
Load/preload component data statefully using React hooks.
import { useEffect, useState } from "react";
export default function useStatefulPromise(
callback: () => Promise<any>,
autoload = true
) {
const [error, setError] = useState<any>();
const [pending, setPending] = useState(true);
const [preload] = useState<boolean>(autoload);
const [result, setResult] = useState<any>();
@vaibhavpandeyvpz
vaibhavpandeyvpz / useWindowSize.js
Created July 25, 2021 11:36
React hook to track window resize events.
import { useEffect, useState } from 'react';
/**
* @return {{width: Number, height: Number}}
*/
function getWindowSize() {
return {
width: window.innerWidth,
height: window.innerHeight,
};
@vaibhavpandeyvpz
vaibhavpandeyvpz / jira-tasks-auto-update.gs
Last active July 23, 2021 14:03
Enumerates all rows, find current status of Jira task ID and updates it into adjacent cell. - For Google Docs Spreadsheets & App Scripts
// Base64 encoded username:password/pat
const credentials = "dmFpYmhhdnBhbmRleXZwejpjbGVhcmx5X25vdF9zZWNyZXQ=";
const defaults = {
contentType: "application/json",
headers: {"Authorization": "Basic " + credentials},
muteHttpExceptions: true
};
const server = "example.atlassian.net";
@vaibhavpandeyvpz
vaibhavpandeyvpz / lumen-storage-link.bat
Created July 15, 2021 18:15
Create symlink to "public" storage folder manually.
@vaibhavpandeyvpz
vaibhavpandeyvpz / useDataLoader.js
Last active January 13, 2022 10:23
Reusable hook to load asynchronous data in React.
import { useEffect, useState } from 'react';
function useDataLoader(promise, options) {
const { autoload } = { autoload: true, ...options };
const [error, setError] = useState(null);
const [loading, setLoading] = useState(!!autoload);
const [result, setResult] = useState(null);
function action() {
setLoading(true);
setError(null);
@vaibhavpandeyvpz
vaibhavpandeyvpz / mybak.sh
Last active June 18, 2023 17:17
Shell script to backup MySQL/MariaDB database to Dropbox.
#!/bin/bash
localBackupDir=${LOCAL_BACKUP_DIR:-$HOME/backup}
remoteBackupDir=${REMOTE_BACKUP_DIR:-backups}
dbHost=${DB_HOST:-localhost}
dbPort=${DB_PORT:-3306}
echo "Changing to '$localBackupDir'..."
cd "$localBackupDir"
@vaibhavpandeyvpz
vaibhavpandeyvpz / array_diff.js
Last active May 29, 2021 13:17
Find the difference in two array.
var array1 = [1, 3, 4];
var array2 = [5, 4, 2];
var existing = [];
for (var i = 0; i < array1.length; i++) {
var key = array1[i];
existing[key] = true;
}
@vaibhavpandeyvpz
vaibhavpandeyvpz / certificates.sh
Last active October 6, 2021 06:34
Generate SHA-256 hashes from SSL's chain of trust for a domain.
#!/bin/bash
CERTIFICATES=`openssl s_client -servername $1 -host $1 -port 443 -showcerts </dev/null 2>/dev/null | sed -n '/Certificate chain/,/Server certificate/p'`
CURSOR=$CERTIFICATES
while [[ "$CURSOR" =~ '-----BEGIN CERTIFICATE-----' ]]
do
CERTIFICATE="${CURSOR%%-----END CERTIFICATE-----*}-----END CERTIFICATE-----"
CURSOR=${CURSOR#*-----END CERTIFICATE-----}
echo `echo "$CERTIFICATE" | grep 's:' | sed 's/.*s:\(.*\)/\1/'`
@vaibhavpandeyvpz
vaibhavpandeyvpz / pu2s3.php
Last active June 6, 2022 15:33
Upload files from public (or any) disk to AWS S3 in Laravel without using any external tools.
<?php
use Illuminate\Support\Facades\Storage;
$public = Storage::disk('public');
$s3 = Storage::disk('s3');
$files = $public->files(null, true);
foreach ($files as $file) {
@vaibhavpandeyvpz
vaibhavpandeyvpz / TimelineView.java
Last active March 19, 2022 19:15
Class that display video frames in a timeline-like manner. To be used at later point in time when developing a video trimmer.
package com.vaibhavpandey.trimview;
import android.content.Context;
import android.content.res.TypedArray;
import android.graphics.Bitmap;
import android.graphics.Canvas;
import android.media.MediaMetadataRetriever;
import android.media.ThumbnailUtils;
import android.net.Uri;
import android.os.Build;