Skip to content

Instantly share code, notes, and snippets.

View minoki's full-sized avatar

ARATA Mizuki minoki

View GitHub Profile
@minoki
minoki / test-setmode.c
Last active January 20, 2017 10:14
Test programs for wide I/O functions
#include <stdio.h>
#include <wchar.h>
#include <locale.h>
#include <string.h>
#include <io.h>
#include <fcntl.h>
#if defined(_MSC_VER)
void handler(const wchar_t *expression, const wchar_t *function, const wchar_t *file, unsigned int line, uintptr_t reserved)
{
{-# LANGUAGE DataKinds, KindSignatures #-}
module FiniteField where
import GHC.TypeLits
data FiniteField (p :: Nat) = MkFF Integer deriving (Eq)
characteristic :: KnownNat p => FiniteField p -> Integer
characteristic = natVal
mkFF :: KnownNat p => Integer -> FiniteField p
@minoki
minoki / hiragana.lua
Last active April 7, 2016 17:31
ランダムなひらがな文字列を生成する。opensslコマンド使用。
local chars = (([[
あいうえお
かきくけこ
さしすせそ
たちつてと
なにぬねの
はひふへほ
まみむめも
やゆよ
らりるれろ
@minoki
minoki / bits.c
Created March 20, 2016 04:49
なんちゃって2進リテラル
#define CONCAT2(x,y) x ## y
#define CONCAT(x,y) CONCAT2(x,y)
#define VAL_END 0)
#define VAL0_END 0) >> 1
#define VAL1_END 0) >> 2
#define VAL2_END 0) >> 3
#define VAL3_END 0) >> 4
#define VAL4_END 0) >> 5
#define VAL5_END 0) >> 6
#define VAL6_END 0) >> 7
@minoki
minoki / vararg.c
Created December 9, 2015 08:19
C言語でマクロを使った可変長引数っぽいことをやってみる
#include <stdio.h>
#include <math.h>
#define CHOOSE(a) CHOOSE2 a
#define CHOOSE2(a0,a1,a2,a3,a4,x,...) x
#define fmax_N(...) CHOOSE((__VA_ARGS__,fmax_5,fmax_4,fmax_3,fmax,fmax_1,~))(__VA_ARGS__)
double fmax_1(double a0) {
return a0;
@minoki
minoki / Better_MyOPAC.user.js
Last active August 31, 2015 05:24
MyOPACのログインフォームを改善したりいろいろ
// ==UserScript==
// @name Better MyOPAC
// @namespace http://d-poppo.nazo.cc/
// @description MyOPACのログインフォーム等を改善する
// @include https://opac.dl.itc.u-tokyo.ac.jp/myopac/
// @include https://opac.dl.itc.u-tokyo.ac.jp/myopac/index.php*
// @include https://opac.dl.itc.u-tokyo.ac.jp/opac/opac_list.cgi
// @include https://opac.dl.itc.u-tokyo.ac.jp/optsrv/opac_list.php*
// @version 5
// @grant none
@minoki
minoki / remind-library-book.js
Last active October 19, 2018 01:55
Mail.appで受信した図書館の貸出資料返却日お知らせメールを元に、リマインダーに項目を作るJavaScript for Automation (JXA)スクリプト。
var Reminders = Application("Reminders");
function performMailActionWithMessages(messages)
{
messages.forEach(function (message) {
var content = message.content();
var r = /返却期限日\(Due Date\):(\d+)\/(\d+)\/(\d+)\nタイトル \(Title\):\n(.*)/g;
var m;
while (m = r.exec(content)) {
var year = parseInt(m[1]);
@minoki
minoki / qrencode-test.hs
Created May 18, 2015 09:31
An example program using haskell-qrencode library.
import qualified Data.QRCode as Q -- from `haskell-qrencode' package
import qualified Codec.Picture as P -- from `JuicyPixels' package
import qualified Codec.Picture.Png as P
import qualified Data.ByteString.Lazy as B
pixelPerCell = 5
main :: IO ()
main = do l <- getLine
let version = Nothing -- auto
@minoki
minoki / qrcode-test.hs
Created May 18, 2015 09:18
An example program using haskell-qrcode library.
import qualified Codec.Binary.QRCode as Q -- from `qrcode' package
import qualified Codec.Picture as P -- from `JuicyPixel' package
import qualified Codec.Picture.Png as P
import qualified Data.ByteString.Lazy as B
import Data.Array (Array,bounds,(!))
pixelPerCell = 5
main :: IO ()
main = do l <- getLine
@minoki
minoki / gist:2732f2d723ef0816fc8e
Created January 18, 2015 11:29
An example of the coproduct type in TypeScript
interface Sum<A,B>
{
elim<C>(left: (value: A) => C, right: (value: B) => C): C;
}
function Left<A>(value: A): {elim<C>(left:(value:A)=>C,right:(value:any)=>C):C;}
{
return {
elim: <C>(left: (value: A) => C, right: (value: any) => C) => left(value)
};
}