Skip to content

Instantly share code, notes, and snippets.

@PhilOwen
PhilOwen / Main.hs
Created January 7, 2018 07:08
HaskellのArrowで、実際のプログラミング問題を解く
import Control.Arrow
import qualified Data.ByteString.Char8 as B
type Stack = ([Int], Int)
height :: Stack -> Int
height = snd
pop :: Stack -> Stack
pop (x:xs, h) = (xs, h-x)
go :: (Stack, Stack, Stack) -> Int
@PhilOwen
PhilOwen / Main.hs
Last active January 1, 2018 06:54
ReaderTでIOの状態を取り回す
import Control.Monad.Trans
import Control.Monad.Trans.Maybe
import Control.Monad.Trans.Reader
import Control.Monad.IO.Class
import System.Random
type DescReaderIO = ReaderT Int IO
main = do
fd <- openSth "foo.txt"
@PhilOwen
PhilOwen / README.md
Created December 16, 2017 14:00
Swiperで、ブラウザを使ったスライド

Swiperを使って、ブラウザでプレゼンのスライドを回す。
プレゼン用の仕組みは色々あるが、 Swiperはionicでも採用されていて、 洗練されていて信頼もできそうだったので使ってみた。

ページ切り替えのデモ があったので、それを自分なりに整理してみた。 ライセンスはMIT。
スライドが遷移するとき、そのページ数と時刻を記録に取るようにしている。 Swiperのインスタンス化のときのオプションで、

@PhilOwen
PhilOwen / README.md
Last active December 16, 2017 12:21
Bootstrap 4で手軽なデザイン

Bootstrapを使って、簡単にデザイン

デザインの微調整はよく手こずるので、 Bootstrapで簡単に済ます。
ドキュメントを見ながら適当にやるだけで、 普段よりかなりマシになった(普段のデザインがダメすぎる…)。

containerやら、tableやらalertのクラスを使った。 あまり理解していなくても、 ドキュメントを見つつ実験すれば一応何とかなる感じ。

@PhilOwen
PhilOwen / README.md
Last active December 16, 2017 13:11
AWS LambdaとAPI Gatewayで、サーバレスなウェブAPI

AWSのLambdaで、DynamoDBにデータを突っ込む。 LambdaではPython等も使えるが、昔からあるnodeを素直に使った。 入り口は、インタネットからAPI Gatewayで。

exports.handlerに実行したい関数を設定する。 DynamoDBはスキーマレスで、カラム定義なしに色々データを突っ込める。 が、レコードのカラムには、Sという不思議なものを渡す。

API Gatewayでは、宛先となるリソースやメソッドを定義する。 パラメータは、node側で取り出すのではなく、

@PhilOwen
PhilOwen / Main.hs
Created August 16, 2017 02:08
Haskellから.NET
import Clr.Inline
rotate :: (Double, Double) -> Double -> IO (Double, Double)
rotate (x, y) t = do
rotated <- [fsharp| System.Numerics.Complex {
let org = new System.Numerics.Complex(($x:double), ($y:double))
let r = new System.Numerics.Complex(cos ($t:double), sin $t )
org * r
} |]
x' <- [fsharp| double { ($rotated:System.Numerics.Complex).Real } |]
@PhilOwen
PhilOwen / Main.hs
Last active October 27, 2017 08:10
Rのニューラルネットを、Haskellからインラインで
import Language.R.Instance(runRegion)
import Language.R.QQ
xorLearnAndPredict :: [[Double]] -> IO ()
xorLearnAndPredict table = do
let [xs, ys, zs] = table
runRegion $ do
[r|
library("neuralnet")
@PhilOwen
PhilOwen / README.md
Last active April 30, 2017 15:52
RをF#から呼んでみる

Mac上のMonoから、Rを呼んでみる。

Rの統計関係の関数や簡単な描画機能は、たまに使いたくなることがある。
だが、Rは統計向けなので、イベントやネットワークといった、 一般のプログラミングでよくやる手法がイマイチわかりにくい。 とはいえ、その勉強にわざわざ労力を割きたくもない
.NetからRを呼ぶR.NETというライブラリがあるので、 それを使うのが良さそう。 逆に、Rから.Netを使うには、R側のパッケージがあるらしい。

@PhilOwen
PhilOwen / HelloSpark.java
Last active March 25, 2017 03:13
Java軽量フレームワークのSparkをVelocityと
import java.util.*;
import static spark.Spark.get;
import spark.ModelAndView;
import spark.template.velocity.*;
public class HelloSpark {
public static void main(String[] args) {
get("/", (req, res) -> {
Map<String, Object> model = new HashMap<>();
model.put("title", "favorite food");
@PhilOwen
PhilOwen / I2CController.cs
Last active January 7, 2017 14:46
Cは古いが役に立つ(C#編)
using System;
class I2CController {
static void Main() {
string i2cFilename = "/dev/i2c-1";
int i2cAddress = 0x68;
try
{
var reader = I2CReader.Open(i2cFilename, i2cAddress);
byte x = reader.GetDataAt(0x80);