Skip to content

Instantly share code, notes, and snippets.

@arturaz
arturaz / jsonb.scala
Created October 5, 2022 17:42
Quill encoder/decoder with play-json
def jsEncoder[A](implicit w: Writes[A @@ SerializedInDB]): Encoder[A] = encoder[A](
java.sql.Types.OTHER,
(index: Index, value: A, row: PrepareRow) =>
row.setObject(index, writeJS(value), java.sql.Types.OTHER)
)
def jsOptEncoder[A](implicit w: Writes[A @@ SerializedInDB]): Encoder[Option[A]] = encoder[Option[A]](
java.sql.Types.OTHER,
(index: Index, maybeValue: Option[A], row: PrepareRow) => {
val json = maybeValue.fold2(null, a => writeJS(a)(w))
// See Utilities.SetWindowTitle.cs for explanation
#if UNITY_EDITOR_WIN || (UNITY_STANDALONE_WIN && !UNITY_EDITOR)
using System;
using System.Runtime.InteropServices;
using FPCSharpUnity.unity.Logger;
using FPCSharpUnity.unity.Utilities;
using GenerationAttributes;
using FPCSharpUnity.core.exts;
using FPCSharpUnity.core.log;
using static FPCSharpUnity.unity.win32_api.Win32API;
@arturaz
arturaz / AbilityTargetData.partials.cs
Created October 18, 2021 10:16
Proposal/example for Quantum union generation
// ReSharper disable all
using System;
namespace Quantum
{
public partial struct AbilityTargetData
{
public static AbilityTargetData newCharacter(EntityRefCharacter _character)
{
var data = default(AbilityTargetData);
@arturaz
arturaz / IO.cs
Last active April 19, 2023 12:48
Stack safe implementation of an IO monad in C#
using System;
using JetBrains.Annotations;
using pzd.lib.data;
using pzd.lib.exts;
namespace pzd.lib.functional {
/// <summary>
/// Allows encapsulating side effects and composing them.
/// </summary>
// ReSharper disable once UnusedTypeParameter
for (final kv in accounts.entries) {
kv.value.details.owner.iswitch(
me: () {},
otherUser: (userId) {
otherUsers
.getE(userId)
.fold((err) => errors.add(StateUpdateError.withoutEvent(err)),
(events) {
final accountId = kv.key;
if (!events.share.rules.isShared(accountId)) {
@arturaz
arturaz / dart1.dart
Last active December 30, 2020 20:44
// Pre copy-paste
getAccount(accountId)
.filterMap((account) =>
account.details.owner != modifier
? Some(
"Can't modify a transaction $eventToModifyRef in account $accountId that you don't own: "
"owner=${account.details.owner}, modifier=$modifier"
)
: const Option.none()
)
@arturaz
arturaz / VertxReadFileFlux.scala
Created June 9, 2020 20:44
Turn a Vertx file into Scala reactor flux which reads bytes upon demand
trait FileProps {
def size: Long
}
val vfs: FileSystem = ???
def readFlux(path: Path): Future[(FileProps, SFlux[Buffer])] =
vfs.propsFuture(path.toString).map { vertxFileProps =>
val props = new FileProps {
override def size = vertxFileProps.size()
import 'dart:io';
import 'package:functional_data/functional_data.dart';
import 'package:meta/meta.dart';
import 'package:zowo_lib/lib.dart';
part 'Config.g.dart';
@immutable
@FunctionalData()
@arturaz
arturaz / SSLUtil.scala
Last active March 30, 2020 09:24
Support for creating a java SSLContext from letsencrypt certificates using BouncyCastle and Scala.
package app.utils
import java.io.{FileReader, Reader}
import java.nio.file.Path
import java.security.cert.Certificate
import java.security.{KeyStore, Security}
import javax.net.ssl.{KeyManagerFactory, SSLContext, TrustManagerFactory}
import org.bouncycastle.asn1.pkcs.PrivateKeyInfo
import org.bouncycastle.cert.X509CertificateHolder
@arturaz
arturaz / Fs2SevenZip.scala
Created March 26, 2020 21:30
Utility class to unzip 7zip archives using fs2 scala library
package app.utils
import java.io.{File, FileOutputStream, RandomAccessFile}
import cats.effect.{ConcurrentEffect, IO}
import com.typesafe.scalalogging.Logger
import fs2._
import fs2.concurrent.Queue
import net.sf.sevenzipjbinding._
import net.sf.sevenzipjbinding.impl.RandomAccessFileInStream