Magnolia Tech

いつもコードのことばかり考えている人のために。

「Design It!」を読んだ

副題にある通り「プログラマのためのアーキテクティング入門」ということで、どうやってシステムのアーキテクチャを設計していくか?という課題に対して向き合うための方法を示してくれる本です。 とはいえ、所謂アーキテクチャカタログ集ではないので、即効…

コードリファレンスと、クロージャと、map関数

このエントリはPerl Advent Calendar 2019の8日目の記事です。 7日目は@kfly8さんでした。 2019/12/8 追記: worthmineさんにコメントで、クロージャの定義が間違っているとご指摘頂きました。すっかり思い込みで誤ったことを書いてしまいました。ちゃんと原…

HHKB Professional Type-Sを買った

PFU Happy Hacking Keyboard Professional2 Type-S 英語配列/白 PD-KB400WS出版社/メーカー: PFU発売日: 2011/06/15メディア: Personal Computersこの商品を含むブログを見る 長年初代のHHKB Professionalをメインで使っていて、それはそれでまったく壊れる…

Airframe Meetup #3へ参加しました

airframe.connpass.com Scala用のライブラリ集であるAirframeに関して学ぶミートアップ、Airframe Meetup #3へ参加してきました。第1回、第2回と絶妙に参加できないタイミングでの開催だったので、次こそは!と思っていましたが、タイミングが今回は合って参…

Anker PowerPort Atom PD 2を買った

2年前にMacBook Pro 13″モデルを購入して以来、周りにUSB Type-Cで充電する機器が増えていった…ヘッドフォンや、スマホ、モバイルバッテリーと、今では日常的に充電する機器はみんなType-Cになったし、その中にはUSB PDで充電できる機器もけっこう有る。 そ…

Clean Architectureを読んだ

Clean Architecture 達人に学ぶソフトウェアの構造と設計作者: Robert C.Martin,角征典,高木正弘出版社/メーカー: KADOKAWA発売日: 2018/07/27メディア: 単行本この商品を含むブログを見る 週末のTwitterのTLで「リスコフの置換原則」が話題に上がっていて、…

コードと、データと、改修の歴史と

ビジネスロジックは、コードと、データと、改修の歴史の3次元で表現されるものなので、本質的に難しいのです— magnoliak🍧 (@magnolia_k_) August 11, 2019 次の設計Nightに向けたネタの整理 ドメイン知識から、コードへ DBの寿命はアプリより長い ハードウェ…

僕らがカンファレンスへ行く理由

本エントリは、BGMに「僕らが旅に出る理由」を流しながら読んで下さい。 builderscon 2019へ参加してきた。 builderscon.io 特定の言語やフレームワークに特化したカンファレンスが多い中、buildersconは特定のテーマに縛られることの無い幅広さが魅力ですね…

「データ指向アプリケーションデザイン」を読んだ

データ指向アプリケーションデザイン ―信頼性、拡張性、保守性の高い分散システム設計の原理作者: Martin Kleppmann,斉藤太郎,玉川竜司出版社/メーカー: オライリージャパン発売日: 2019/07/18メディア: 単行本(ソフトカバー)この商品を含むブログを見る …

Scala 2.13より未使用変数への警告を抑止するunused annotationが追加された

時々メソッドのインタフェースを揃えるために、わざと使わない引数を定義することが有る。 Scalatraでもインタフェースを揃えるためにServletのRequestとResponseをペアで定義しているが、必ずしも使っていない、みたいなコードがあり、ビルドの度に未使用パ…

ログミーTechで昨年に設計Night2018で話した内容が文字起こしされました!

connpass.com 昨年開催され、大好評だった「設計Night2018 powered by Classi」での自分の登壇内容がログミーTechさんにて文字起こしされました! logmi.jp logmi.jp logmi.jp ブクマも改めて80近く行きました。凄い! この辺の話、もう一回整理して1時間く…

Anker PowerCore 13400 Nintendo Switch Editionを買った

Anker PowerCore 13400 Nintendo Switch Edition (Power Delivery対応 Nintendo Switch急速充電 13400mAh モバイルバッテリー 任天堂公式ライセンス)【PSE認証済 / PowerIQ搭載 / Power Delivery対応】出版社/メーカー: Ankerメディア: エレクトロニクスこの…

Javaや、Scalaで、camel-caseをsnake-caseへ変換する方法

GoogleのGuavaというライブラリを使うとできる。 github.com 各種case表記を相互に変換してくれる便利なライブラリ。 Json4sのこのissueの解決の参考なるかと思って調べたけど、まぁObjectのキーが負の数って時点で、特殊な話なので、そこはtransformFieldで…

Timbuk2のメッセンジャーバッグを買った

Timbuk2のメッセンジャーバッグを買った。Sサイズだと、13インチノートPCがかっちり入るサイズ。長距離の移動時に、メインのバッグとは別にあると、最低限の持ち物(PC含む)がまとめられて便利。 [ティンバックツー] クラシックメッセンジャー S Jet Black …

ScalaMatsuri 2019に行ってきた

2019.scalamatsuri.org 今まで行きたいと思っていながらなかなか行けなかったScalaMatsuriにようやく参加してきました。 ScalaMatsuriは、割とメインの日程が土日になるように設定されていて、それだと参加しづらかったのですが、今年は金曜日にメインの日程…

Scalaでネストしたcase classのインスタンスを作るときに気をつけること

きっかけはJson4sの、このissue. github.com テストクラスの中で定義したcase classが正しく判定されない、というもの。 いくらJson4sのコードを追いかけてもよく分からなかったところ、いつも色々なことを教えて頂くKenji Yoshidaさん(@xuwei_k)に教えて頂…

Akko 3068というメカニカルキーボードを買った

Akko 3068 小型のメカニカルキーボードが欲しく、でも自作に手を出すのも時間が足りない…みたいなことで、検索していたら丁度よさそうのを見つけた。Akko 3068というメカニカルキーボードで、Cherry製のキースイッチが採用されていて、茶軸、青軸、赤軸から…

小西康陽 / わたくしのビートルズ

普段、本を読むと言えば技術書ばかりで、あまりコラム集のような、明確な目的の無い本を読むことが無い。 わたくしのビートルズ 小西康陽のコラム1992-2019作者: 小西康陽出版社/メーカー: 朝日新聞出版発売日: 2019/04/19メディア: 単行本この商品を含むブ…

Scala 2.13.0がリリースされた

github.com 長い開発期間を経て、ついにScala 2.13.0がリリースされました! 今回、ドキュメントへの1行だけの追記ですが、初めてScala本体へのPRがマージされたので、Contributorsに自分の名前が有るのが最高に嬉しいですね。 github.com というわけで、Sca…

Scala 2.13におけるStringに対するtoIndexedSeqの挙動

Scala 2.12と、2.13で返す型が変わっていますが、ドキュメント上で探すことができませんでしたのでここに書いておきます。 Welcome to Scala 2.12.8 (OpenJDK 64-Bit Server VM, Java 12.0.1). Type in expressions for evaluation. Or try :help. scala> va…

scala 2.13から導入されるArraySeq.unsafeWrapArrayは何が'unsafe'なのか?

blog.magnolia.tech 先日のエントリで、ArraySeq.unsafeWrapArrayを取り上げましたが、そもそも何が'unsafe'なの?immutableなデータ構造にラップするので、safeなのでは?と疑問に思ったところ、いつものごとくKenji Yoshida(@xuwei_k)さんに教えて頂きまし…

Scala 2.13からArrayからIndexedSeqへの暗黙の変換が非推奨となる

いよいよ正式リリースが近づいてきたScala 2.13ですが、既存のコードをリリース候補版のScala 2.13でコンパイルすると以下のようなメッセージを見かけるようになりました。 scala> def makeSeq(a: Array[Int]): Seq[Int] = if (a == null) Nil else a ^ warn…

Scala 2.13からscala.SeqはImmutableになった

Scala 2.12まで Welcome to Scala 2.12.8 (OpenJDK 64-Bit Server VM, Java 12.0.1). Type in expressions for evaluation. Or try :help. scala> val seq1: scala.Seq[Int] = scala.collection.immutable.Seq(1, 2) seq1: Seq[Int] = List(1, 2) scala> val…

ELECOMのUSB 3.1, PD対応のType-Cケーブルを買った

先日AnkerのUSB PD 60W対応の充電器を買ったので、卓上の電源周りを見直そうと、USB Type-Cケーブルも新調した。純正では2mも有って卓上では取り回しづらいので、ELECOMのUSB 3.1対応、USB PD 5A対応の、所謂全部入りのケーブル…以前はけっこう高かった印象…

The Art of UNIX Programming

The Art of UNIX Programming作者: Eric S.Raymond,長尾高弘出版社/メーカー: KADOKAWA発売日: 2019/03/08メディア: 単行本この商品を含むブログを見る しばらく絶版になっていた「The Art of UNIX Programming」がアスキードワンゴから再発された。アスキー…

Scalaで、既存のクラスに新しい振る舞いを追加する

Rubyにはrefinementsという仕組みが有って、特定のスコープ内だけで既存クラスのメソッドの振る舞いを変えたり、追加したりできます。 例えばStringクラスに、toBlahという、文字列の前に"Blah!"という文字列を追加するというメソッドが欲しくなったとしまし…

scala.language.higherKindsについて

久しぶりにDwangoさんのScala研修テキストを読んでいたら、今まで理解していなかったオプションが出てきたので調べてみた。 dwango.github.io そのオプションとはこれ。 import scala.language.higherKinds scala.language.higherKindsについて、Scaladocに…

Anker PowerPort Speed 1PD 60を買った

Anker PowerPort Speed 1 PD 60 (60W USB-C 急速充電器)【PSE認証済 / 折りたたみ式プラグ / Power Delivery対応】iPhone, iPad Pro(11インチ、2018) , MacBook, Galaxy S9 / S9+, Xperia XZ1 その他USB-C機器対応出版社/メーカー: Ankerメディア: エレクト…

MB16ACのディスプレイスタンドにはSatechi R1というタブレットスタンドがとても丁度良い、という話

Satechi R1 アルミニウム マルチアングル タブレットスタンド (2018 iPad Pro, 2018 MacBook Air, iPhone Xs Max/XS/XR, 8 Plus/8, Samsung S9 Plus/Sなど対応) (ブラック)出版社/メーカー: Satechiメディア: オフィス用品この商品を含むブログを見る タイト…

ポータブルディスプレイ ASUS MB16ACを購入した

ASUS モバイルディスプレイ MB16AC 15.6インチモニター(1,920×1,080 / ブルーライト軽減 / USB Type-C / IPSパネル)出版社/メーカー: Asustek発売日: 2017/07/21メディア: Personal Computersこの商品を含むブログを見る 以前から気になっていたASUS MB16AC…