来世から頑張る!!

技術ブログを目指して

Free Monadについて

新規性の無い話というものはなかなか話す場所も無いもので、 どこにも話す機会が見つからなかったのでブログに書いて放置しようかと。 Free MonadのApplicative合成 Free MonadはMonadです。 なのでApplicative合成ができます。 Applicative合成ができても直…

FreeのRunnerを抽象化する

モチベーション 差し替え時の変更忘れなどを防ぐために、Runner部分を抽象化してConstructor Injectionしたい。 Free ここは今回重要ではないので、Functorの要らない単純な実装を用意。 sealed trait Free[F[_], A] { def map[B](f: A => B): Free[F, B] = …

Mac GerdtsのIMPERIAL(インペリアル)の日本語訳で気になったところ

PD VerlagのIMPERIAL, ニューゲームズオーダーの日本語訳付きを買いました。 日本語訳ルールの他国に行軍ときの動きの訳が自分の解釈と違うので、メモ。 日本語訳 友好的な態度を取らせる場合は、駒を寝かせます。この友好的な陸軍駒は、州の活動を妨げませ…

IndexedContを使ってみよう: 継続編

この記事は? IndexedCont便利なのでみんな使ってほしいとの思いの元、前提となる知識から解説する記事です。 前回はfor式を使ったエラーハンドリングの基本的なことを書きました。 なお、今回もIndexedContは 出てきません 。 継続 今回も引き続きforを使っ…

IndexedContを使ってみよう: 前提知識編

この記事は? IndexedCont便利なのでみんな使ってほしいとの思いの元、前提となる知識から解説する記事です。 なお、次の次の回ぐらいまでIndexedContは 出てきません 。 本編 この記事ではエラーハンドリングのためにIndexedContを使えるようになることを目…

ボードゲームのハコについて

このエントリーはボドゲ紹介 Advent Calendar 2017の7日目です。 前日: 推理ゲーム『ワトソン&ホームズ』 - kano-e no memo 翌日: テラフォーミング・マーズの魅力: うぃりあむの「ヴァリアントの森」 タイトルの通り、ボドゲのハコを紹介したいと思います。…

Scalaでの🍣の数え方

最近のおっさんはビールもきちんと数えられないことに驚愕したので、ScalaですがJavaの話をします。 昔と違ってUTF-8の半角カナが3バイトだと信じてくれないおじさんとは出会わなくなってきたなと思ってたのに、世の中そう甘くはなかったようです。 Javaの話…

一般的なShellで空白を含むPathをループしたい願望

sh

まず、Shellって何かがわからないところから入るわけだけど、 いや、自分が打っているのが所謂shなのかbashなのかzshなのかがわからないってことなんだけど、 まあ複数ファイルを順次処理したい時ってあるわけですね。 forを使ったループ シンプルな例だと以…

自分用メモ #scala

アレ用のアレ。 implicit def fs2effectTask: fs2.util.Effect[scalaz.concurrent.Task] = { import scalaz.concurrent.Task import fs2.util.Effect new Effect[Task] { def fail[A](err: Throwable) = Task.fail(err) def attempt[A](t: Task[A]) = t.atte…

SQL99のWITH句について

MySQLしか触った事のない人にとっては全く知らない文法だというとこを最近知ったので。 WITH句とは WITH句は、ネストされたテーブルに別名をつけて読みやすくするために使用する構文。 PostgreSQL, Oracle, MS SQL Serverなどで使用可能。 MySQLは(少なくと…

AnsibleでDockerとかしたいのにdocker-pyに苦しめられた話

はい。タイトル通りです。 ansibleとはpythonで動いてるけどpython書かなくてもいい不思議な何かという認識。 で、ansibleからdockerコンテナー立ち上げるときのレシピがこちら。 --- - name: Run CentOS container docker: image: "centos:centos6" name: s…

GolangでShift_JIS(Windows31J)のファイルを読み込み

たどり着くまで時間がかかったのでメモ。 文字コードを意識しないファイルの読み込み つまりはUTF-8のファイル。BOMはどうなんだろう?(試していない) os.Openとbufio.NewReaderで行ごとに読み込める。 注意点: 読み込み完了時はerrorにio.EOFが入る。 packa…

ScalaでゆるふあにDB接続

この記事はScala Advent Calendar 2015 12日目です。 www.adventar.org 昨日は同じく私による今日から始めるScalaプログラミングでした。 前置き 私はアプリケーションにSQLを自分で書きたい派です。 参考: ScalaでSQLが書きたいんだ!! なので積極的に自分…

今日から始めるScalaプログラミング!!

この記事はScala Advent Calendar 11日目です。 www.adventar.org 昨日はdakatsukaさんによるScalaでLuaスクリプトを動かして遊ぶでした。 Luaでしたね!! ゲーム業界すごいですね! さて、Scala Advent Calendarですが、まだまだ空きがあります。 難しいこ…

ScalaでSQLが書きたいんだ!!

DSLとかOR Mapperとかじゃなくて、SQLが直接書きたいんだ!! 嘘です。タイトル詐欺です。 最近neo4jというグラフ指向データベースがお気に入りでして、 アクセス用のクエリとしてCypherという言語を使います。 基本はHTTP+JSONでRESTにアクセスできるのです…

Optionがモナドだったなんて・・・orz

いやね、Scalaの話なんですけどね、何の話かってね、Option型がOption("a")とかってやって生成できるの。。。 > val a = "abc" a: String = abc > val o = Option(a) o: Option[String] = Some(abc) 今までずっとSome(a)かNoneでしかOption生成できないと思…

WindowsでGoのクロスコンパイル環境構築(Go Ver 1.5専用)

さすがはWindows!ひと手間かけたおいしさだぜ!! 経過をメモっているので、最後だけ読めば事足りるよ!! 参考にしたのはこのあたり Go のクロスコンパイル環境構築 - Qiita Windows7 64bit版でGo言語のクロスコンパイルを試す - taknb2nchのメモ どうして…

型安全なリストを作りたい Part. 1

最終的な目標としては、行列の計算がしたい。 1 2 3 1 4 1*1+2*2+3*3 1*4+2*5+3*6 14 32 ( ) * ( 2 5 ) = ( ) = ( ) 4 5 6 3 6 4*1+5*2+6*3 4*4+5*5+6*6 32 77 こんな感じのやつ。 2行3列の行列は3行2列の行列との積を求めることができて、結果は2行2列の行…

Scala勉強会で発表してきた。

初スライド!!! for の使い方について。 http://kazzna.jp/slide/scala_for/index.html Haskellのモナド系ブログが大体doを理解するならStateだってなってたので便乗です。 勉強会でも口頭で言ったけれど、 flatMapの定義をするなら Monad則 を覚えないと…

Scalaの型推論って難しい

ラムダ計算とかの例によくある チャーチ数 をScalaで試してみる。 原点を表す Zero 、次を表す Succ を定義しておけば足し算とかできるってやつ。 まずは試し書き import Conrtol.Applicative zero f a = a succ n f a = f $ n f a one = succ zero two = su…

atomのMarkdown Previewのフォント設定

atomエディタのMarkdownプレビューのCSS設定がいつの間にか変わっていたのでメモ。 目的は日本語のフォントにしたい。デフォルトだと中国系だからね 検索するといくつか出てくるけど、 setting -> Open Config Folder で、 styles.less を修正する。 /* * Yo…

Python入門のためtoolz入れてみた

pythonは文法が単純で覚えやすいらしい。 class MyClass: def __init__(self, init_value): self.value = init_value def my_method(self, value): return self.value + value instance = MyClass(5) print instance.my_method(3) # => 8 print MyClass.my_m…

ハノイの塔をScalaで解く

ハノイの塔自体は再帰を使えば簡単に解けることは有名で、Googleれば大体すぐ出てくる。 def hanoi(height: Int, from: String, via: String, to: String): Unit = { if (height <= 0) { () } else { // 1. スタート位置にある一番下以外のものをすべて関係…

MonadTって自動でMonadにはならないの???

Monadって難しいって話。 元ネタは xuweiさんのブログ いやね、最近PlayでWebアプリ作ろうと頑張ってるんですよ。 そこでログ出力のために、引数で渡すものを必要に応じてWriterにできればなとか考えてたんですよ。 結果うまくはいかなかったんですが。 本編…

簡単に分かるPrologの魅力

昨日はPlayもくもく会に行ってきました。 色々と教えていただいてありがとうございます。 で、その中でたまたまprologのお話になったので、 prologの魅力が簡単に分かるような「prolog向きの」サンプルを書いてみたいと思います。 ちなみに、prologは頑張れ…

emerge app-emulation/dockerとカーネルの癒着問題

Dockerのインストールを試みるよ!!! なんでDockerかと言いますと、Haskell環境がほしい!とか、LAMP環境がほしい!!とかいろいろあるものの、環境が汚れきって手に終えなくなることを経験してきたからなのです。 しかし、このDocker、なかなかに凶悪です…

Windows 7上に入れたVirtualBoxを4.3.22にバージョンアップしたらssh接続が途切れる問題に遭遇?

今のところ原因不明。。。 Windows 7にVirtualBoxを入れてその中のLinuxからsshでサーバーにつなぐ使い方をしていたんだけど、今日4.3.22にアップデートできますという通知が来たので軽い気持ちで上げてしまった。 別に何の問題もなく使えていたと思っていた…

結局Linux環境はGNOMEで妥協した。

まあタイトル通りなのですが、gnome-tweak-toolのフォントの倍率を1.4にしつつ、残りは書くツールごとの調整機能で倍率を調整しました。 OSはUbuntu GNOME 14.04 見た目が気に入ったかどうかで選んだので、細かいことは気にしません。 どうやらgnome-tweak-t…

VMwareにUbuntuを入れると画面がすごく小さいので解像度を下げたい

なんとかしたい。 問題点 UbuntuをVMware上に入れたら、元のモニターが1960x1080の11.6インチだったために、96dpi?ではすごく文字が小さくなってしまった。 解決への挑戦 システム設定から行けないかな?とチャレンジ システムの設定から軽々変えられちゃう…

emerge -uDN @world したらstartx後のキーボードレイアウトが英語になった。

ふしぎ。 emerge -uDN worldしたらstartx後のキーボードが英語レイアウトになった(T ^ T) Xの外では日本語なのに。どこなおせばいいのかな? #gentoo #awesome— かず(アミノ酸等) (@kazzna) 2015, 1月 24 このままでは困るので、何とかして治そうと試みます…