Skip to content

Instantly share code, notes, and snippets.

const SECONDS = 1000
const MINUTES = 60 * SECONDS
const HOURS = 60 * MINUTES
const DAYS = 24 * HOURS
function convertTime(duration: number) {
const [days, daysReminder] = integerDivide(duration, DAYS)
const [hours, hoursReminder] = integerDivide(daysReminder, HOURS)
const [minutes, minutesReminder] = integerDivide(hoursReminder, MINUTES)
const [seconds, milliseconds] = integerDivide(minutesReminder, SECONDS)

Keybase proof

I hereby claim:

To claim this, I am signing this object:

@frosas
frosas / revolut-terms-diff.patch
Last active April 18, 2020 11:11
Revolut Terms and Conditions 2019-09-06 vs 2020-04-18 diff
2a3,5
>
> Download as a PDFhere
>
53c56
< You can check all payments into and out of your account through the Revolut app. We will not make any changes to your account information and it will be available to you through the Revolut app for six years after you close your account. If you need to keep a copy of the information after then, you will need to download it. You can download information from the app at any time.
---
> You can check all payments into and out of your account through the Revolut app. We will not make any changes to your account information. It will be available to you through the Revolut app while you are a customer. It will also remain available through the Revolut app for six years after you close your account. If you need to keep a copy of the information after then, or if you need to keep a copy of it outside of the app, you will need to download it. You can download this information from the app at any time.
131c134
< Email us on feedback@revolut.com or formalcomplaints@revolut.co
@frosas
frosas / index.js
Created April 15, 2019 15:54
setupGlobalDom()
const setupGlobalDom = () => {
const originalDocument = global.document;
const originalWindow = global.window;
global.document = jsdom('');
global.window = global.document.defaultView;
return () => {
global.document = originalDocument;
global.window = originalWindow;
}
}
@frosas
frosas / README.md
Last active November 2, 2023 13:45
Hacker News Comments Filter

Usage

Copy/paste index.js into your browser console. Then,

// Non-Angular Javascript contract positions in London or remote
hn.filter(
  hn.or(/(javascript|typescript)/i, /ES\d/, 'JS'),
  hn.not(/angular/i),
 /contract/i,
@frosas
frosas / README.md
Last active October 25, 2017 15:37
Profiling a Node process using flame graphs

Profiling a Node process using flame graphs

(assuming an Ubuntu machine)

Setup

  • Install perf: sudo apt-get install linux-tools-generic
  • Run perf and install any other listed missing package: (e.g.) sudo apt-get install linux-tools-4.4.0-1022-aws linux-cloud-tools-4.4.0-1022-aws
  • Enable symbols mapping when running the Node process: node --perf-basic-prof ...
@frosas
frosas / index.js
Last active August 9, 2017 14:45
HN Most Replied Comments
// Shows only the most replied comments in https://news.ycombinator.com post and
// comment pages.
(() => {
const INDENT_WIDTH = 12; // TODO Detect it automatically?
class CommentTreeNode {
constructor(attrs) {
this.children = [];
@frosas
frosas / index.md
Created January 7, 2014 09:57
Use static node/npm if system one is not new enough (WIP)
# Make sure we have an up to date node/npm
NODE_VERSION="v0.10.22"
if [[ $(echo -e "$NODE_VERSION\n$(node -v)" | sort -n | tail -n1) == $NODE_VERSION ]]; then
    NODE_DIR=node-$NODE_VERSION-linux-x86
    wget -q http://nodejs.org/dist/$NODE_VERSION/$NODE_DIR.tar.gz -O - | tar xzf -
    export PATH=$(cd ./$NODE_DIR/bin && pwd):$PATH
fi
<?php
namespace Acme\Bundle;
use Doctrine\Bundle\DoctrineBundle\ConnectionFactory;
use Doctrine\Common\EventManager;
use Doctrine\DBAL\Configuration;
class PerProcessConnectionFactory extends ConnectionFactory
{