Skip to content

Instantly share code, notes, and snippets.

View rista404's full-sized avatar
📟

Nikola Ristić rista404

📟
View GitHub Profile
@rista404
rista404 / example_usage.tsx
Last active September 29, 2023 16:47
React hook for easier polling of data.
function Component() {
const [items, setItems] = useState([])
async function fetchItems(abortSignal: AbortSignal) {
try {
const res = await fetch(`/api/items/`, { signal: abortSignal })
const resp = await res.json()
if (res.ok && resp.ok) {
setItems(resp.items)
} else {
@rista404
rista404 / hdup.sh
Created February 3, 2019 17:19
Shortcut for creating a heroku docker app
function hdup() {
if [ "$1" != "" ]
then
heroku apps:create $1 --region eu -s container
echo "build:\n docker:\n web: Dockerfile" > heroku.yml
touch Dockerfile
else
echo "Please provide an app name."
fi
}
@rista404
rista404 / wrap-text-usage.js
Last active September 3, 2018 11:58
Utility to wrap text in canvas, or to get text sizing info (number of lines, height, positions).
import { wrapText } from './wrap-text'
// Drawing and highlighting words (twitter style)
wrapText({
ctx,
text: text,
x: 0,
y: 0,
maxWidth: 500,
lineHeight: fontSize * 1.2,
// @flow
import cache from 'memory-cache'
import fetch from 'isomorphic-fetch'
const TTL_MILISECONDS: number = 10 * 60 * 1000 // ten minutes
export default async function<T>(url: string, options?: Object): Promise<T> {
const cachedResponse = cache.get(url)
if (cachedResponse) return cachedResponse
@rista404
rista404 / Copy.js
Created May 21, 2018 14:39
React wrapper for easy integration with clipboard.js (with Flow annotations)
// @flow
import * as React from 'react'
import Clipboard, { type ClipboardType } from 'clipboard'
type Props = {
text: string,
onSuccess?: () => any,
children: React.Node,
}
function selectText(element) {
let range
let selection
if (document.body.createTextRange) {
//ms
range = document.body.createTextRange()
range.moveToElementText(element)
range.select()
} else if (window.getSelection) {
//all others
@rista404
rista404 / colors_codegolf.js
Last active April 20, 2018 00:24
Some codegolfing I did, along with the progress
// random hex
'#'+Math.random().toString(16).slice(-6)
'#'+(~~(Math.random()*0xffffff)).toString(16)
'#'+parseInt(Math.random()*0xffffff).toString(16)
// random rgb
r=_=>(Math.random()*255|0),`rgb(${[r(),r(),r()]})`
// random rgba
r=_=>(Math.random()*255|0),`rgba(${[r(),r(),r()]},1)`
import React from 'react'
export default class WithSwipe extends React.Component {
xDown = null
yDown = null
handleTouchStart = evt => {
this.xDown = evt.touches[0].clientX
this.yDown = evt.touches[0].clientY
}
{
"Working Directory" : "\/Users\/rista\/Projects",
"Prompt Before Closing 2" : 0,
"Selected Text Color" : {
"Green Component" : 0,
"Red Component" : 0,
"Blue Component" : 0
},
"Rows" : 30,
"Ansi 11 Color" : {
@rista404
rista404 / index.html
Created December 21, 2016 22:06
Funky paint app
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>HTML5 Canvas</title>
<style>
* {
box-sizing: border-box;
}
html, body {