STモナドはなぜ変更可能な参照を外へ持ち出せないのか調べてみた

この投稿は、Haskell Advent Calendar 2019 の4日目の記事です。STモナドの仕組みについて書きました。初中級者向けの内容となっています。 一部正確さに欠ける解説があったので内容を訂正しました。詳細はこの記事下部の訂正内容をご確認ください。(2019/1…

VSCodeでHaskellを書く環境を構築する(IntelliJ IDEAの操作感ちょい足し)

はじめに 先日、自宅のMacBook ProのmacOSをクリーンインストールしつつCatalinaにアップデートしました。 まっさらな環境に一から環境構築していくのは楽しい作業ではあるのですが、Haskellの環境に関しては数ヶ月前に試行錯誤の末に構築したこともあり全然…

本気でHaskellに入門したかったので「Get Programming with Haskell」を読んだ

久々の投稿です。 今回は、最近読んだこちらの本がHaskellの入門書としてとても良かったので紹介したいと思います。 www.manning.com こちらの本は、Manning や Amazon で購入することもできますが、サブスクリプション型の O'Reilly Learning (Safari Books…

3年間悩み続けてようやく利用開始したSafari Books Onlineが最高だった件

先日、Safari Books Onlineの利用を開始したのですが、学びの世界が一気に広がりとても満足しています。今回はこの喜びを表現しようと、Safari Books Onlineについてとか、利用開始に至った経緯、それと、お得な利用方法について書きたいと思います! Safari…

macOS Mojaveにアップグレードして対処したこと

昨年11月にMacBook ProのOSをMojaveにアップグレードしましたが、今回から導入されたダークモードは個人的にかなり好みではあるものの、普段使いするのにとても困った事象に遭遇しました。今回は発生した事象とどう回避したかについて書きたいと思います。 …

「オブジェクトデザイン」を読んだ

「オブジェクトデザイン」という設計技法の本を読みました。 www.shoeisha.co.jp オブジェクトデザインは、2007年9月に出版された本で、残念ながら今は絶版となっています。原著は2002年11月に出版されたこちらですね。 www.informit.com 実は先日たまたま図…

Monix v3.0.0-RC2からTask.applyの挙動が変わっている

最近、Monix というScalaの非同期プログラミング用ライブラリを使い始めました。 monix.io 最初は、最新安定版である v2.3.3 で色々触ってみて「これは使える!楽しい!」となって、v3.x 系の方はどんな感じかなと思いバージョンを上げてみると、メソッド名…

セールを利用してMartin FowlerのRefactoringとMichael NygardのRelease It!を少しお安く購入した話

前回は海外の出版社のセールについて書きました。 shinharad.hateblo.jp 私は早速このセールを利用して、以下の2冊を購入しました。いずれもeBookです。 Refactoring: Improving the Design of Existing Code, 2nd Edition Release It! Second Edition 今回…

この時期は洋書の技術書をお得に買おう!

毎年恒例ですが、11月下旬から12月末にかけてのこの時期は、海外の出版社が相次いで年間最大規模のセールへ突入するので、洋書の技術書がお得に買えますよ、という話。 普段Safari Books Onlineなどのサブスクリプションサービスを利用していない人にとって…

Scala関西Summit 2018のスライドのリンク集(WIP)

Scala関西Summit 2018 で公開されたスライドを集めてみました。順不同です。随時更新していきます。 Scalaでのドメインモデリングのやりかた by @j5jk2o さん DatabricksとSparkではじめる [データ分析/機械学習] 実践入門 by @smdmts さん 明日から使える実…

「Complete React Tutorial (with Redux)」はReactの基礎を学ぶのに良いかもしれない

フロントエンドの技術を学ぶのに私がよく利用している The Net Ninja (動画学習サイト)ですが、知りたいことはまず動画で学び、深掘りしたくなったら書籍などで学ぶというスタイルが効率的な学習方法なのかなと最近感じています。 さて、今回はそんな The …

毎週末持って帰るのがつらいので自宅用のHHKBを購入した

今までHHKBは一台しか持っていなくて、平日は職場で、週末は自宅へ持って帰るという生活が続いていました。 一応、ハードケースDX というHHKB専用のケースで持ち運んでいたのですが、これだと電車で片手が塞がってしまい、本を読むのに邪魔だったんですよね…

「Mastering Functional Programming」を読んだ

Packt Publishing の Mastering Functional Programming を読みました。今回はこの本について書きたいと思います。 www.packtpub.com どんな本か この本はざっと次のような内容が書かれています。ちなみに言語はScalaです。 関数型、命令型プログラミング双…

「JavaScript DOM Tutorial」でVanilla JS力を磨く

現在フロントエンドの技術を少しずつキャッチアップしていますが、今回はVanilla JS力を磨くべく The Net Ninja の JavaScript DOM Tutorial をやってみました。 JavaScript DOM Tutorial JavaScript DOM Tutorialは、YouTubeで公開されている学習コースです…

「Effective DevOps」を読んだ

「Effective DevOps ―4本柱による持続可能な組織文化の育て方」という今年3月に出版された本を読みました。 www.oreilly.co.jp DevOpsというと、開発と運用だけの話であるとか、CI/CD自動化とかツールの話に目が行ってしまいがちですが、この本はそうした誤…

「Vue JS 2 Tutorial」は復習にちょうど良さそう

最近はプライベートでVue.jsを触ってるんですが、公式ドキュメント を読んだ後に、Vue JS 2 Tutorial という学習コースをやってみたら復習にちょうど良かったので今回はその話。 Vue JS 2 Tutorial は、The Net Ninja というイギリスのオンライン学習サイト…

zube.ioの紹介と半年間使ってみた感想

前回、タスク管理ツールの zube.io の話をしたので、改めてこのツールの紹介と半年間使ってみた感想を書きたいと思います。 zube.io zubeの特徴 zubeは以下のような特徴があります。 GitHubのissueと連動したカンバンによるタスク管理 GitHubの複数リポジト…

若者にScalaを1ヶ月間試行錯誤しながら教えてみた話

はじめに 私が所属する開発チームでは、メインのプログラミング言語としてScalaを使用しています。小規模なチームでScalaが書けるメンバーは数名程度。それぞれのメンバーは、コードを書きながらインフラをやりながら人によってはプロダクトマネジメントもや…

「Removing jQuery from GitHub.com frontend」の学びが多かった件

これまで私はサーバーサイドを中心にやってきてフロントエンドの知識がまだまだなので、例えばフロントエンドはVue.jsがメインだけど部分的にどうしてもDOMを触らなければいけないケースでは「じゃあ、ここはjQuery使うの仕方ないな」という思考になっていた…

Packt Publishingが$10セール中なので3冊購入した

Packt Publishing が恒例の$10セールをやっていたので、今回はこの辺を購入しました。読んで面白かったら感想をここに書きますね。 Mastering Functional Programming Scala Reactive Programming Vue.js 2 Design Patterns and Best Practices ちなみに、Pa…

Scala界隈マップ(関東地方版)をお試しで作ってみた

今朝、ふとこんなことを思い付きました。 Scalaを採用する企業が昔と比べて増えてきたのでネット系ベンチャー地図みたいなので可視化したら楽しそう。こんな感じで。 https://t.co/ApsMNLxkGf— shinharad (@shinharad) 2018年8月30日 というわけで、ちょっと…

「Learning Functional Programming in Go」を読んだ

Go

はじめに Packt Publishing の Learning Functional Programming in Go を読みました。 www.packtpub.com この本は、Go で関数型プログラミングをやってみようというなかなかニッチな内容になっています。名前がアレなのでもしかしたら、Functional Programm…

HHKBの装備(記録用)

私は HHKB Professional2 Type-S を尊師スタイルで使用していますが、今回はその HHKB の装備について書きたいと思います。(至って普通装備ですが...) キーボードブリッジ キーボードブリッジは、ノートPC本体のキーボードの上に HHKB を乗せて打鍵するた…

Scalaの名前渡しパラメータが参照する度に評価されるってどこに明記されてるか調べてみた

恥ずかしい話なんですが、Scala の名前渡しパラメータ (by-name parameter) がメソッドの中でパラメータを参照する度に評価されてしまうことを知りませんでした。つまりこういうことですね。 def f: Int = { println("hello") 0 } def g(v: => Int) = { v + …

ScalaでXMLを加工する

Scala で XML を扱う機会ってまだまだあるのかなと思ってます。 例えば、既存システムの WebAPI が XML 形式しか対応してなかった場合とか。そうしたときに、Scala の XML リテラルで直接 XML を書くとか、XML を探索して特定要素の値を抽出するとかだったら…

gibo 2.x系で使い方が微妙に変わっていた

Git

gibo は、github/gitignore で公開されている内容をもとに .gitignoreファイルを自動生成するツールですが、久しぶりに使ってみたら使い方が微妙に変わっていたので自分メモです。 インストール mac の場合は homebrew でインストールします。 $ brew instal…

circeのdecodeでデフォルト値を設定する

Scala の JSONライブラリ circe で、JSON を decode する際にフィールドが欠落していたらデフォルト値に置き換える方法について書きます。結構前からある機能なのでご存知の方も多いかもしれません。 つまり、こういうケースですね。 import io.circe.generi…

HHKBでIntelliJ IDEAのショートカットキーのポジションを見直してみる

今年4月に MacBook Pro(以下「MBP」)の標準キーボードから Happy Hacking Keyboard Professional2 Type-S(以下「HHKB」)へ乗り換えました。独特なキー配列に最初は戸惑いを感じましたがそれは数日で慣れ、今では静電容量無接点方式の心地良い打鍵感で快…

ブログはじめました

普段感じていることを少しずつ書いていこうと思います。 ブログは確か2010年くらいに一度書いていたことがありました。その当時は、Google App Engine でブログを自作して公開していたんですが、どちらかというと、ブログを書くことよりもブログに色んな機能…