Skip to content

Instantly share code, notes, and snippets.

View przemek-pokrywka's full-sized avatar

Przemek Pokrywka przemek-pokrywka

View GitHub Profile
@przemek-pokrywka
przemek-pokrywka / CannotSubstituteMyClock.scala
Created August 5, 2023 20:08
Am I doing something wrong or substituting elements of environment does not work?
//> using dep "dev.zio::zio:2.0.15"
//> using scala 2.13
import zio._
import java.time
import java.time.temporal.ChronoUnit
import java.time.{Instant, LocalDateTime, OffsetDateTime}
import java.util.concurrent.TimeUnit
@przemek-pokrywka
przemek-pokrywka / example.scala
Last active November 14, 2021 19:51
Can programming be liberated from the ZIO layer style?
/// Powered by TSK - The Scripting Kit https://github.com/tsk-tsk/tsk-tsk 2> /dev/null \\\
/*
export v=0.1.5
. $(b=boot-tsk-$v u=git.io/$b; (cat ~/.tsk/$b || curl -sfL $u || wget -qO - $u) | sh)
scala_version=2.12.13
bloop_version=1.4.11
dependencies='
com.h2database:h2:1.4.199
io.getquill::quill-jdbc-zio:3.8.0
@przemek-pokrywka
przemek-pokrywka / MagicImportsAreNotValid.scala
Created October 22, 2021 18:36
The Ammonite magic imports are (unfortunately!) NOT a valid Scala 😞 - the issue is that the dots within the version numbers are breaking compilation, even if you use the backticks
package $ivy
object `group::artifact:1` {
object `2` {
object `3` {
val exception = new Exception()
}
}
import $ivy.`group::artifact:1`.`2`.`3`.exception._
#!/bin/bash
usage() {
cat <<EOF
usage: git gone [-pldD] [<branch>=origin]
OPTIONS
-p prune remote branch
-n dry run: list the gone branches
-d delete the gone branches
-D delete the gone branches forcefully

Keybase proof

I hereby claim:

  • I am przemek-pokrywka on github.
  • I am przemekpokrywka (https://keybase.io/przemekpokrywka) on keybase.
  • I have a public key ASBg_m-i2q5d06b9QdXWtWhLsVNydC_o6hwc83t6YpsPIgo

To claim this, I am signing this object:

@przemek-pokrywka
przemek-pokrywka / scraper.scala
Created September 4, 2016 17:43
The example shown at Scalapolis 2016 in Wrocław (with small improvements). HTML scraping of the conference page done as a one-file executable Scala script.
trait valid_both_in_bash_and_in_scala /* 2>/dev/null
# ^^^ can be replaced by anything that's harmless in Bash and valid top-file-def in Scala.
# Kudos to that attendee (sorry, I don't know your name), who noticed that opportunity. Cheers!
# Making sure Coursier is available
cr=~/.coursier
test -e $cr/cr || (mkdir $cr && wget -q -O $cr/cr https://git.io/vgvpD && chmod +x $cr/cr)
dependencies=(
org.jsoup:jsoup:1.7.2
@przemek-pokrywka
przemek-pokrywka / hello-coursier-ammonite-play.sh
Last active May 7, 2016 22:55
Serve a webpage using Play framework with a simple script. Nothing more, than Linux and Java required. Thanks to brilliant work of Alexandre Archambault, @li_haoyi and Play developers.
#!/bin/bash
test -e ~/.coursier/cr || (mkdir -p ~/.coursier && wget -q -O ~/.coursier/cr https://git.io/vgvpD && chmod +x ~/.coursier/cr)
CLASSPATH="$(~/.coursier/cr fetch -q -p \
\
com.typesafe.play:play-netty-server_2.11:2.5.0 \
com.typesafe.play:play_2.11:2.5.0 \
com.lihaoyi:ammonite-repl_2.11.7:0.5.2 \
\
)" java \
-Dplay.crypto.secret=foo.bar.baz \
@przemek-pokrywka
przemek-pokrywka / StackTraceHelper.scala
Created September 19, 2013 22:42
Small utility to clean up longish stacktraces. All comments how to make it more generic warmly welcome.
object StackTraceHelper
{
def retainWithBorder [T] (items: Seq[T],
valuable: (T => Boolean)): Seq[T] =
{
if (items.size < 3) return items
val retained = for
{

Let me welcome you with some Scala code:

object Hello extends App {
  println("Hello!")
}

And now the same, but with standard Markdown formatting:

object Hello extends App {