Skip to content

Instantly share code, notes, and snippets.

View angelikatyborska's full-sized avatar

Angelika Tyborska angelikatyborska

View GitHub Profile
@angelikatyborska
angelikatyborska / myphoenixapp.service
Created March 10, 2021 18:37
Phoenix app serviced service file
# /etc/systemd/system/myphoenixapp.service
[Unit]
Description=Runner for My Phoenix App
After=network.target
StartLimitIntervalSec=500
StartLimitBurst=5
[Service]
WorkingDirectory=/path/to/myphoenixapp
@angelikatyborska
angelikatyborska / rpg.ex
Created August 15, 2021 09:35
Protocol consolidation vs mix test --no-compile
# test/rpg_test.exs
defmodule RPGTest do
use ExUnit.Case
alias RPG.{Edible, LoafOfBread}
describe "LoafOfBread" do
test "implements the Edible protocol" do
{:consolidated, modules} = Edible.__protocol__(:impls)
const { spawnSync } = require('child_process')
const fs = require('fs')
const path = require('path')
const os = require('os')
const glob = require('glob')
// this loader "imports" a .pot file by compiling all of the .po files under the same domain
// into a JSON with translations that can be used by vue-gettext
//
// E.g.:
@angelikatyborska
angelikatyborska / gettext_test.exs
Last active January 16, 2022 16:24
A unit test for Gettext translations that checks if the original and the translation use the same HTML tags. Uses Floki to parse HTML.
defmodule MyAppWeb.GettextTest do
use ExUnit.Case
import MyAppWeb.Gettext
# A unit test for Gettext translations that checks if the original and the translation
# use the same HTML tags.
#
# Uses Floki to parse HTML.
describe "translations" do
@angelikatyborska
angelikatyborska / .zshrc
Last active May 30, 2022 09:35
Prevent yourself from using the wrong js package manager
npm() {
if [ -f yarn.lock ]; then
echo 'use yarn';
else
command npm $*;
fi
}
yarn() {
if [ -f package-lock.json ]; then
defmodule MyApp.Repo.Migrations.AddUuidOssp do
use Ecto.Migration
def up do
execute("CREATE EXTENSION IF NOT EXISTS \"uuid-ossp\" WITH SCHEMA public;")
end
def down do
execute("DROP EXTENSION \"uuid-ossp\";")
end
@angelikatyborska
angelikatyborska / index.js
Created September 30, 2022 10:34
Add event listeners to all possible events on an element
element = ...
listener = ...
for (const key in element) {
if(/^on/.test(key)) {
const eventType = key.substr(2);
element.addEventListener(eventType, listener);
}
}
@angelikatyborska
angelikatyborska / index.html
Last active January 19, 2023 21:52
Providing custom error messages for built-in HTML5 form validation
<!DOCTYPE html>
<html lang="en">
<head>
<title>Form Validation</title>
<style>
body { padding: 10px; }
</style>
</head>
<body>
<form>
@angelikatyborska
angelikatyborska / index.ts
Last active January 30, 2023 10:14
TypeScript notes
// If I define a union type of strings and want to use it as a type for object keys:
type Food = 'Banana' | 'Berries'
const calorieCounts: { [index in Food]: number } = {} // <- NOT `index: Food`
// ----------
// If I define an object and want to use its keys as a type:
// NOTE the object shouldn't have a type definition for this to work!
const planetYearsToEarthYears = { earth: 1, mercury: 0.24 }
type Planet = keyof typeof planetYearsToEarthYears
@angelikatyborska
angelikatyborska / index.ts
Last active February 16, 2023 16:20
TypeScript tasks
// Task 1:
// copy-paste start ----------------------------------------
// TODO: define function argument type
function addOne(numberOrNumbers) {
if (typeof numberOrNumbers === 'number') {
return numberOrNumbers + 1
} else {