Skip to content

Instantly share code, notes, and snippets.

@nafg
nafg / groupme.sc
Last active December 2, 2019 23:02
import scala.util.{Failure, Success}
import $ivy.`io.circe::circe-core:0.12.3`
import $ivy.`io.circe::circe-generic:0.12.3`
import $ivy.`io.circe::circe-parser:0.12.3`
import io.circe.{Decoder, Encoder}
import io.circe.generic.auto._
import io.circe.syntax._
import io.circe.parser
import requests.BaseSession
@nafg
nafg / some.scala
Last active September 9, 2019 14:21 — forked from suni-masuno/some.scala
class SomeClass {
private def get(url: String): Future[Option[String]] =
for {
serviceResponse <- sendGetRequest(url)
} yield maybeBody(url, serviceResponse)
private def maybeBody(url: String, response: HttpResponse[String]): String =
if (response.is2xx) Some(response.body)
else None
@nafg
nafg / Webpack.sc
Last active August 16, 2022 23:25
import java.io._
import java.util.zip.ZipInputStream
import geny.Generator
import mill._
import mill.define.Target
import mill.scalajslib._
object WebpackLib {
@nafg
nafg / apt-get
Last active January 24, 2019 05:41
Waiting apt-get based on answer by Radu Rădeanu at https://askubuntu.com/a/375031/124119
#!/bin/bash
while fuser /var/lib/dpkg/lock >/dev/null 2>&1 ; do
echo "Waiting for other software managers to finish..."
sleep 10
done
/usr/bin/apt-get "$@"
@nafg
nafg / docker-compose.selenium.yml
Created January 17, 2019 22:01
Run postgres, selenium with headless chrome, app, and selenium tests, in 4 panes using tmux
version: "3.2"
services:
selenium:
image: selenium/standalone-chrome
ports:
- "4444:4444"
@nafg
nafg / edit_md.fish
Last active July 5, 2018 23:49
Script to edit google compute engine instance metadata entry as a file
#!/usr/bin/fish
set instance $argv[1]
set key $argv[2]
set tmpdir (mktemp -d)
set file $tmpdir/(string replace _ . $key)
gcloud compute instances describe $instance --format="value(metadata.$key)" > $file
@nafg
nafg / LoadYaml.scala
Last active January 4, 2018 19:42
LoadYaml.scala
import java.io.{FileReader, Reader}
import scala.concurrent.Await
import scala.concurrent.ExecutionContext.Implicits.global
import scala.concurrent.duration.Duration
import slick.jdbc.PostgresProfile.api._
import slick.jdbc.PostgresProfile.columnTypes
import slick.jdbc.meta.MPrimaryKey
@nafg
nafg / SlickMigration.scala
Created October 16, 2017 00:40
flyway scala migration
import java.sql.Connection
import org.flywaydb.core.api.migration.jdbc.JdbcMigration
import slick.dbio.DBIO
import scala.concurrent.duration.Duration
import scala.concurrent.{Await, ExecutionContext}
abstract class SlickMigration extends JdbcMigration {
implicit def executionContext = ExecutionContext.global
@nafg
nafg / toVDOM.scala
Last active November 20, 2022 02:53
HTML to scalajs-react VDOM
#!/usr/bin/env amm
import scala.xml.{Elem, Node, Text, XML}
def quoteString(s: String) =
'"' +
s.replace("\n", "\\n").replace("\"", "\\\"") +
'"'
@nafg
nafg / imperative_to_recursive.scala
Last active March 20, 2017 03:26
Mechanical steps to convert many algorithms written as a while loop to a tail-recursive function
def fibImperative(index: Int): Int = {
var a = 0
var b = 1
var counter = 0
while (counter < index) {
val c = a + b
a = b