Skip to content

Instantly share code, notes, and snippets.

@webdeb
webdeb / gitlab-run.alias
Created April 29, 2017 14:52
gitlab-runner alias
alias gitlab-run='gitlab-runner exec docker --docker-volumes "/var/run/docker.sock:/var/run/docker.sock" --docker-privileged'
@webdeb
webdeb / gitlab phoenix build & test pipeline
Created May 1, 2017 00:09
DinD pipeline to build & test phoenix applications
image: docker:latest
variables:
PWD: $(pwd)
BUILD_BOX: webdeb/phx-dev
DATA_BOX: build_data_$CI_PROJECT_ID_$CI_BUILD_REF
stages:
- build
- test
@webdeb
webdeb / OTP - Dockerfile
Last active September 21, 2017 06:42
Dockerfile for releases
FROM alpine:3.5
ARG APP
EXPOSE 5000
EXPOSE 4369
ENV PORT=5000 \
MIX_ENV=prod
RUN apk --no-cache add ncurses openssl
самый простой способ зайти по ssh на продакшен и у бинарника которым запускаешь проект выполнить attach_console
[12:45]
или есть сложней способ, сделать тунелирование портов с продакшена
их список можно увидеть запустив команду
`epmd -names`
`ssh -N remote_hose -L port1_from_command_above:localhost:port1_from_command_above -L port2_from_command_above:localhost:port2_from_command_above`
запустить свою локальную версию продакшен проекта с таким же значением куки как и продакшен, и вуаля ты можешь видеть все что происходит на продакшене
например запустить observer (edited)
# Requires Erlang/OTP 19.0. Invoke as:
#
# iex --erl "-proto_dist Elixir.Epmdless -start_epmd false -epmd_module Elixir.Epmdless_epmd_client" --name frobozz3
# A module containing the function that determines the port number
# based on a node name.
defmodule Epmdless do
def dist_port(name) when is_atom(name) do
dist_port Atom.to_string name
end
@webdeb
webdeb / IndexFallbackPlug.ex
Created May 7, 2018 01:59
Simple plug to just fallback to the index.html file
defmodule Karta.Web.ReactPlug do
import Plug.Conn
def init(options), do: options
def call(conn, _opts) do
conn
|> put_resp_header("content-type", "text/html; charset=utf-8")
|> Plug.Conn.send_file(200, Application.app_dir(:karta_web, "priv/static/index.html"))
end
@webdeb
webdeb / Hasura Keycloak.md
Last active October 29, 2022 19:03
Basic Keycloak Script Mapper to provide Hasura claims

Steps to provide Hasura Claims in Keycloak generated JWT

  1. Create your realm / client
  2. Inside client configuration go to "Mappers"
  3. Click on "Create"
  4. Name it "hasura"
  5. Choose Mapper Type "Script Mapper"
  6. Add following script to demonstrate how it works
@webdeb
webdeb / Mailgun.ts
Created November 5, 2020 23:51
Simple deno mailgun client
export default class MailgunClient {
apiKey: string;
domain: string;
defaults?: {
from?: string;
subject?: string;
};
constructor(apiKey: string, domain: string, defaults?: Record<string, any>) {
this.apiKey = apiKey;
@webdeb
webdeb / useLazyQuery.js
Created May 31, 2022 17:36
useLazyQuery for Blitz.js
import { useState } from "react"
import { useQuery } from "blitz"
const useLazyQuery = (resolver, inputArg, options = {}) => {
const [enabled, setEnabled] = useState(false)
const [result, extras] = useQuery(resolver, inputArg, {
...options,
enabled,
suspense: false,
onSettled: () => setEnabled(false),
@webdeb
webdeb / levels.py
Last active June 10, 2023 13:20
Simple Inputs ladder on single ADC pin.
import uasyncio as asyncio
from machine import ADC
import time
class Levels:
_last_level = None
debounce_ms = 200
none_level = 65000
callbacks = {}