Skip to content

Instantly share code, notes, and snippets.

View satosystems's full-sized avatar

Satoshi Ogata satosystems

View GitHub Profile
@satosystems
satosystems / file1.txt
Last active February 23, 2018 15:21
Boost を用いた ISO 8601(RFC 3339)フォーマットの日付出力 ref: https://qiita.com/satosystems/items/662f11c31ccc7d43ae1e
$ g++ main.cpp -std=c++11 -I/usr/local/Cellar/boost/1.66.0/include -lboost_date_time
$ ./a.out
2018-02-24T00:09:55.980492+09:00
@satosystems
satosystems / Main.hs
Created November 23, 2017 12:59
Haskell で yes コマンドを実装した ref: https://qiita.com/satosystems/items/f034e809882c6695e4ec
{-# LANGUAGE OverloadedStrings #-}
module Main where
import qualified Data.ByteString.Char8 as BC8
import System.IO
main :: IO ()
main = mapM_ (BC8.hPut stdout) (repeat "y\n")
@satosystems
satosystems / file0.hs
Last active August 10, 2019 19:46
作って理解する Haskell の Monad ref: https://qiita.com/satosystems/items/e8788f05924cef226493
class Functor f where
-- | fmap は上記説明通りの定義になってますね
fmap :: (a -> b) -> f a -> f b
class Functor f => Applicative f where
pure :: a -> f a
-- | <*> は上記説明通りの定義になってますね
(<*>) :: f (a -> b) -> f a -> f b
liftA2 :: (a -> b -> c) -> f a -> f b -> f c
(*>) :: f a -> f b -> f b
@satosystems
satosystems / file0.txt
Last active February 17, 2017 17:36
Neovim のプラグインを Haskell で書いてみる ref: http://qiita.com/satosystems/items/da37a583facacc8b597e
.
├── app
│   └── Main.hs
└── src
   ├── Hello
   │   └── Plugin.hs
   └── Hello.hs
@satosystems
satosystems / file0.js
Created February 15, 2017 07:44
JavaScript の && 演算子の落とし穴 ref: http://qiita.com/satosystems/items/3eb3de495c2bb10e132c
let foo = "foo";
if (foo) console.log("bar"); // => "bar"
foo = null;
if (foo) console.log("bar"); // => 出力なし
foo = "foo";
console.log(foo && foo.length === 3); // => true
foo = null;
console.log(foo && foo.length === 3); // => null
@satosystems
satosystems / hpi-sample.hs
Created February 4, 2017 18:23
Raspberry Pi の Haskell GPIO ライブラリ ref: http://qiita.com/satosystems/items/a0b977565910d68e1c55
import Control.Concurrent
import Control.Monad
import System.RaspberryPi.GPIO
led = Pin08
button = Pin07
main = withGPIO $ do
setPinFunction led Output
setPinFunction button Input
@satosystems
satosystems / file0.txt
Last active March 5, 2020 02:31
Raspberry Pi 3 Model B に Haskell 開発環境を構築する ref: https://qiita.com/satosystems/items/d5f379de906c8368eb2e
$ brew install ddrescue
$ curl -LO https://downloads.raspberrypi.org/raspbian_lite_latest
$ unzip raspbian_lite_latest
$ for f in `ls *-raspbian-*.img`; do IMG=$f; done
$ diskutil list # SD カードがどのデバイスかを目視確認する(ここでは /dev/disk2 として進める)
$ DISK=disk2 # ここで目視したディスクを環境変数に入れる
$ diskutil unmountDisk /dev/$DISK
$ sudo ddrescue $IMG /dev/$DISK --force
$ touch /Volumes/boot/ssh # ssh を有効にする
$ diskutil eject $DISK
@satosystems
satosystems / file0.txt
Created January 27, 2017 10:37
Java の URLConnection で基本認証を行う際のハマりどころ ref: http://qiita.com/satosystems/items/ad49cefa837e80c5083b
http://username:password@example.com
@satosystems
satosystems / file0.txt
Last active August 31, 2016 13:36
配列をリストに追加するベンチマーク ref: http://qiita.com/satosystems/items/b4d24da3bb3089c369e2
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
public class Main {
public static void main(String... args) {
String[] array = new String[10000];
List<String> list = new ArrayList<>();
Prelude> :m + Data.ByteString.Char8
Prelude Data.ByteString.Char8> :m + Codec.Binary.UTF8.String
Prelude Data.ByteString.Char8 Codec.Binary.UTF8.String> pack "ほげ" -- ダメなパターン
"{R"
Prelude Data.ByteString.Char8 Codec.Binary.UTF8.String> pack $ encodeString "ほげ" -- 良いパターン
"\227\129\187\227\129\146"
Prelude Data.ByteString.Char8 Codec.Binary.UTF8.String> unpack $ pack $ encodeString "ほげ" -- ダメなパターン
"\227\129\187\227\129\146"
Prelude Data.ByteString.Char8 Codec.Binary.UTF8.String> decodeString $ unpack $ pack $ encodeString "ほげ" -- 良いパターン
"\12411\12370"