Skip to content

Instantly share code, notes, and snippets.

@coord-e
coord-e / main.rs
Last active March 13, 2021 09:56
Upload to S3 (minio) via warp
use std::convert::TryInto;
use std::io;
use std::net::SocketAddr;
use std::sync::Arc;
use anyhow::{bail, Context};
use bytes::{Buf, BufMut, BytesMut};
use futures::stream::{self, Stream, TryStreamExt};
use mime::Mime;
use mpart_async::server::MultipartStream;
@coord-e
coord-e / channel.is
Last active October 8, 2020 15:04
どこからでもチャンネルに投稿するプラグイン
### {
name: "どこからでもチャンネルに投稿するプラグイン"
version: "0.0.1"
author: "coord_e"
description: "どこからでもチャンネルに投稿したい...どこからでもチャンネルに投稿したくない?"
permissions: ["read:channels" "write:notes"]
}
@main() {
#channels = Mk:api("channels/followed" { limit: 100 })
@coord-e
coord-e / kitchen.hs
Last active October 26, 2020 02:27
キッチン計算
#!/usr/bin/env stack
-- stack --resolver lts-16.5 script --package mtl
{-# LANGUAGE NamedFieldPuns #-}
{-# LANGUAGE DerivingStrategies #-}
{-# LANGUAGE GeneralizedNewtypeDeriving #-}
import Numeric.Natural ( Natural )
import Data.List ( genericReplicate
, genericLength
@coord-e
coord-e / nat.hs
Created August 5, 2020 02:11
Prove properties of type-level naturals in Haskell
{-# LANGUAGE DataKinds #-}
{-# LANGUAGE TypeOperators #-}
{-# LANGUAGE GADTs #-}
{-# LANGUAGE TypeFamilies #-}
{-# LANGUAGE UndecidableInstances #-}
{-# LANGUAGE FlexibleInstances #-}
{-# LANGUAGE PolyKinds #-}
{-# LANGUAGE NoStarIsType #-}
{-# LANGUAGE NoImplicitPrelude #-}
@coord-e
coord-e / dup.is
Last active August 8, 2020 10:22
増やせ!
### {
name: "増やす"
version: "0.0.1"
author: "coord_e"
description: "増やせ!"
}
@parse_num_attr(text def) {
#arr = Str:split(text, " ")
? (Arr:len(arr) = 0) {
@coord-e
coord-e / spin.is
Last active August 8, 2020 10:22
回せ!
### {
name: "回す"
version: "0.0.1"
author: "coord_e"
description: "回せ!"
}
@parse_num_attr(text def) {
#arr = Str:split(text, " ")
? (Arr:len(arr) = 0) {
@coord-e
coord-e / validate.sh
Created July 16, 2020 00:00
Validate HTML/CSS using Web API
#!/bin/bash
shopt -s globstar
for file in **/*.html; do
curl -fsS "https://validator.w3.org/nu/?out=gnu" \
-H "Content-Type: text/html; charset=utf-8" \
--data-binary "@$file" \
| { ! grep -z error; }
done
@coord-e
coord-e / assoc.hs
Created July 15, 2020 01:16
Prove type-level list's associativity (without singletons)
#!/usr/bin/env runghc
{-# LANGUAGE GADTs #-}
{-# LANGUAGE DataKinds #-}
{-# LANGUAGE TypeOperators #-}
{-# LANGUAGE AllowAmbiguousTypes #-}
{-# LANGUAGE TypeApplications #-}
{-# LANGUAGE ScopedTypeVariables #-}
{-# LANGUAGE TypeFamilies #-}
@coord-e
coord-e / assoc.hs
Created July 15, 2020 01:15
Prove type-level list's associativity (using singletons)
#!/usr/bin/env stack
-- stack --resolver lts-16.5 script --package singletons
{-# LANGUAGE DataKinds #-}
{-# LANGUAGE TypeOperators #-}
{-# LANGUAGE AllowAmbiguousTypes #-}
{-# LANGUAGE TypeApplications #-}
{-# LANGUAGE ScopedTypeVariables #-}
{-# LANGUAGE TypeFamilies #-}
{-# LANGUAGE GeneralizedNewtypeDeriving #-}
{-# LANGUAGE DerivingStrategies #-}
{-# LANGUAGE FlexibleContexts #-}
{-# LANGUAGE TemplateHaskell #-}
import Data.Functor ( void )
import Data.Vector ( Vector, (!?), fromList )
import qualified Data.Map.Strict as Map ( Map, lookup, insert, empty )
import Control.Monad ( forever, unless )
import Control.Monad.State.Strict ( MonadState, modify, get, put, evalStateT )