Skip to content

Instantly share code, notes, and snippets.

@Gab-km
Gab-km / Robustness_principle_JP.md
Last active February 22, 2021 10:58
堅牢性原則

堅牢性原則

original: Robustness principle

コンピューティングの世界において、堅牢性原則はソフトウェア設計のガイドラインである:

あなたが為すべきことには保守的であれ、あなたが他から受け入れることには寛容であれ(しばしば「あなたが送るものには保守的であれ、あなたが受け取るものには寛容であれ」と言い換えられる)

この原則は、TCPの初期の仕様を執筆したジョン・ポステルに因んで、ポステルの法則としても知られている:

@Gab-km
Gab-km / main.rs
Created August 13, 2020 12:48
OrbTkの使い方(修正版)
use orbtk::prelude::*;
use std::cell::Cell;
// `Rust のマルチプラットフォーム UI ライブラリ OrbTk の使い方 - A Memorandum<https://blog1.mammb.com/entry/2019/12/16/090000>`
// で紹介されている、Rust用クロスプラットフォームUIツールキット `OrbTk<https://github.com/redox-os/orbtk>`
// が興味深かったので写経したところ、上記記事では OrbTk のバージョンは 0.3.1-alpha1 でしたが、
// 現時点(2020/08/13)では v0.3.1-alpha4 まで上がっており、そのまま書くだけでは動かないところが
// あったので、「イベント処理」のサンプルに v0.3.1-alpha4 なりの修正を入れて書き直してみました。
static ID_INPUT: &'static str = "input";
@Gab-km
Gab-km / Get-FilesRecursively.ps1
Created January 19, 2017 14:21
再帰的にファイルのフルパス、サイズ、更新日時を表示するスクリプト
Get-ChildItem -Recurse | where { $_.Directory } | %{ [System.String]::Format("{0}`t{1}`t{2}", $_.FullName, $_.Length, $_.LastWriteTime) } | %{ Write-Output $_ }
@Gab-km
Gab-km / exceptionalParameterizedTest.fs
Last active April 27, 2016 05:29
例外が起こるかもしれないparameterizeなテスト
let catch (expr: Lazy<'T>) =
try
Choice2Of2(expr.Force())
with
| ex -> Choice1Of2(ex)
let parameterizedTest(input, expected) = test {
let actual = catch (Lazy.Create <| fun () -> fut input)
match (expected, actual) with
| (Choice1Of2 ex, Choice1Of2 ex') ->
@Gab-km
Gab-km / assertSeqEquals.fs
Last active April 8, 2016 02:35
Persimmon の暫定的な assertSeqEquals を書いてみた
(*
* The MIT License (MIT)
*
* Copyright (c) 2016 Kazuhiro Matsushima
*
* Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the
* Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software,
* and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
@Gab-km
Gab-km / factorialNumberSystem.fs
Created March 17, 2016 01:44
何をやりたいか分からなくなってきたので放流する
let rec factorial n =
match n with
| 0 | 1 -> 1
| _ -> n * (factorial (n - 1))
type FactorialNumber(num: int) =
let infactorials = Seq.initInfinite <| fun i -> factorial (i+1)
let range = Seq.takeWhile (fun fc -> fc <= num) infactorials |> Seq.toList
let rec factSystemize n fcs acc =
match fcs with
@Gab-km
Gab-km / ConsolePrinter.fs
Created December 15, 2015 08:28
何かのコード
module ConsolePrinter =
open System.Text
open System.ComponentModel
[<EditorBrowsable(EditorBrowsableState.Never)>]
let private bit mask b =
b &&& mask = mask
[<EditorBrowsable(EditorBrowsableState.Never)>]
let private bit0 = bit 0b00000001uy
@Gab-km
Gab-km / gifts.fs
Created December 15, 2015 00:42
某所のアレをやってみた
type Family = Blair | Smith | Kelly | Tavares | Chen | Singh
type Person = { First: string; Last: Family }
let blair's first = { First = first; Last = Blair }
let smith's first = { First = first; Last = Smith }
let kelly's first = { First = first; Last = Kelly }
let tavares' first = { First = first; Last = Tavares }
let chen's first = { First = first; Last = Chen }
let singh's first = { First = first; Last = Singh }
@Gab-km
Gab-km / papylon_doc.ja.rst
Last active December 8, 2015 03:08
ぱぴろん非公式ドキュメント

ぱぴろん非公式ドキュメント

ぱぴろんとは?

ぱぴろん(Papylon)は、満たすべき性質(property)を記述することでテストケースを自動生成する Python 用テスティングツールです。いわゆる"QuickCheck"系の流れを汲み、 FsCheckScalaCheck の影響を強く受けています。テストしたい対象の振る舞うべき性質を記述して実行すると、テストケースをランダムに生成して実行し、性質が成り立つかどうかを確認します。

簡単な例

@Gab-km
Gab-km / hchobi_1.md
Last active August 29, 2015 14:08
この記事( http://d.hatena.ne.jp/kamekoopa/20141024/1414134734 )にインスピレーションされた。

List

  /\
a1 /\
  a2  /\
    a3   nil

foldr