Aesonのjsonのparseで「nullが指定されている」と「キーが存在しない」を区別する .:!を使えば良い {-# LANGUAGE DeriveGeneric #-} {-# LANGUAGE OverloadedStrings #-} import Data.Aeson import GHC.Generics data PatchTest = PatchTest { f1 :: Maybe (Maybe »
gitrevを使ってjsonを作る {-# LANGUAGE TemplateHaskell #-} {-# LANGUAGE DeriveGeneric #-} module Version where import Data.Aeson import Development.GitRev import GHC.Generics data LibVersion = LibVersion { branch :: String »
Haskell (その2) Advent Calendar 2017 (7日目)の記事です。 Advent Calendarのネタ探しに何か作ろうと思った。 slack上のQA形式の知見を手動でまとめていき、後から参照しやすくするbotを作りたいと思った。 (リリースまで行けなかった。次の休みには公開してリンク貼ります。。無念 ) => 追記2017-12-29: 作ったやつ => https://slacknowledge.pig-brewing.com/ 特にすごいことはなく普通にサービスを作ってしまったので、使ったライブラリとその使い方などを紹介したいと思います。 主なやったことは次の3点: slack botを作る »
SESでのメール送信に関連するライブラリの紹介記事です。 SESで添付ファイル付メールを送るにはSendRawEmailアクションを使用する。この時メールのフォーマットを組み立てる必要が有るため、自力で全部やるのは厳しい。 次のライブラリを使用した。 amazonka-ses, amazonka 包括的なAWSのSDK。その内のSESに対するアクション。 mime-mail MIMEを扱うためのライブラリ。これを使いSendRawEmailに送るメールのデータを作成する。 heterocephalus 型安全なテンプレートエンジン。本題からはそれるが、メール本文の作成に使用。 mime-mail Mail 型の値を組み立てて、renderMailでByteStringを作成(renderMail'でboundaryランダム生成)。 Mailの組み立てに幾つかの便利関数が用意されている。 {-# LANGUAGE OverloadedStrings #-} »
業務で何度かreduxを実用している。 基本reduxは実用的で良いと思っている。 関数型的な考え方に抵抗があった人も、reduxを使い、思考を変えようとしているように見えるのは驚きだ。 一方、冗長に感じる箇所や妥協で書いてしまうパターンもある。どのように扱っていけばよいのだろうか? sample repository: https://github.com/nakaji-dayo/redux-practice actionについて Actionは代数データ型を表現したかったものである。 // actions.js const XXX_ACTION = 'XXX_ACTION' export const »