Skip to content

Instantly share code, notes, and snippets.

@csokun
csokun / eth01
Created September 25, 2017 02:09
eth validation
// testing
@csokun
csokun / Dockerfile
Created November 7, 2017 05:29
nod:8.9.0-alpine cmake taglib2
FROM node:8.9.0-alpine as builder
RUN apk add --no-cache cmake make gcc g++ libc-dev linux-headers git
RUN npm install taglib2 -g
@csokun
csokun / elixir-bashrc
Last active November 2, 2019 00:55
Elixir docker playground, let keep your workstation clean while experimenting the language
# setup Elixir aliases
export ELIXIRROOT="$HOME/elixir"
if [ ! -d "$ELIXIRROOT" ]; then
mkdir -p $ELIXIRROOT
fi
export MIXPATH="/root/.mix"
export HEXPATH="/root/.hex"
export ELIXIR_VOLUMES="-v ${ELIXIRROOT}/.mix:${MIXPATH} -v ${ELIXIRROOT}/.hex:${HEXPATH} --workdir /src"
alias iex='docker run -it ${ELIXIR_VOLUMES} -v ${PWD}:/src --rm --network=host elixir'
alias iexm='docker run -it ${ELIXIR_VOLUMES} -v ${PWD}:/src --rm --network=host elixir iex -S mix'
@csokun
csokun / get-golang.sh
Created September 18, 2020 12:14
Download & Install Golang (Linux)
#!/bin/bash
GOPATH=$(which go)
if [ -n "$GOPATH" ]; then
echo "Go installed: $GOPATH"
go version
exit 1
fi
VERSION=1.15.2
PKG_NAME="go${VERSION}.linux-amd64.tar.gz"
# .env
# POSTGRES_PASSWORD=
# PGADMIN_DEFAULT_EMAIL=admin@localhost
# PGADMIN_DEFAULT_PASSWORD=
version: "3.3"
services:
pgsql:
image: postgres:11-alpine
restart: always
volumes:
---
# shared-volume
# ├── app1
# └── app2
---
apiVersion: v1
kind: Pod
metadata:
name: app1
spec:
@csokun
csokun / upsert.ex
Created May 9, 2023 13:45
Ecto conditional upsert
defmodule App.Posts do
# ref. https://amandasposito.com/elixir/ecto/macro/2021/01/22/macro-ecto-custom-on-conflict.html
# ref. https://elixirforum.com/t/upsert-conditional-update-e-g-update-only-when-existing-data-is-outdated/55503/2
defmacro custom_on_conflict_update_replace_all(queryable) do
values =
:fields
|> Post.__schema__()
|> Enum.map(fn f ->
{f, quote(do: fragment(unquote("EXCLUDED.#{f}")))}
@csokun
csokun / .iex.exs
Created August 11, 2023 02:45
Elixir using Finch to stream Stellar Horizon transaction
Finch.start_link(name: MyFinch)
url = "https://horizon.stellar.org/accounts/GAFNBDOZBFUKHB4ZY5ANCQ25PM33YLTMWQKW25J7LXNZM3YSHRH3BELY/transactions?limit=200&cursor=119456526699307008&include_failed=true"
Finch.build(:get, url, [{"Accept", "text/event-stream"}])
|> Finch.stream(MyFinch, nil, fn
{:status, status}, _acc ->
IO.inspect(status)
{:headers, headers}, _acc ->
IO.inspect(headers)
@csokun
csokun / pg.sql
Created September 10, 2023 09:18
postgres disconnect all clients
SELECT pg_terminate_backend(pg_stat_activity.pid)
FROM pg_stat_activity
WHERE pg_stat_activity.datname = 'TARGET_DB'
AND pid <> pg_backend_pid();
@csokun
csokun / ecto_query.exs
Created October 13, 2023 05:04
Ecto Query - aggr many-to-many count child
# user <1---*> playlist <1---*> playlist_song
(from p in Playlist,
join: u in assoc(p, :user),
left_join: ps in assoc(p, :songs),
where: p.id == ^1 and u.id == ^1,
group_by: p.id,
select: %{
playlist_id: p.id,
song_count: count(ps.id)
}