Magnolia Tech

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

Dottyではimportするシンボルをコントロールするgivenという記法がサポートされる

dotty.epfl.ch import A.{given _}と書くと、パッケージAの中でgiven tc as TCと指定した内容がインポートされます。 PerlのExporterモジュールで@EXPORTにエキスポートしたい関数を指定するみたいな感じですね。 pointoht.ti-da.net 単にPerlとScalaを並べ…

Scalaにおけるライブラリの衝突

github.com このPR、単純な依存ライブラリのアップデートのはずがScala 2.11だけテストが失敗している。 エラーメッセージを見ると、サーバ側がstatus code500を返して、テストが失敗していることが分かる。 [info] [info] MyScalatraServletTests: [info] […

Spay-JsonがJSON ASTからScalaオブジェクトを生成する仕組み

調べたことを雑に残すシリーズです。 github.com Spray-Jsonの基本的な使い方は以下の通りです。 case class Color(name: String, red: Int, green: Int, blue: Int) object MyJsonProtocol extends DefaultJsonProtocol { implicit val colorFormat = jsonF…

Meraki Goを導入したらApple Musicへつながらなくなったが、ルータのIPv6の設定を有効にしたらつながった

タイトルで全部言い切っているんだけど、先日Meraki Goを導入したらApple Musicにつながらなくなったので、その解決までの道のり。 blog.magnolia.tech 普通のウェブサイトへの接続とか、特に動作がおかしいとかもなく普通に使っていたんだけど、よく見るとA…

Scalaのコンストラクタのフィールドを取得する

コンストラクタのフィールドを得る方法について import scala.reflect.runtime.{universe => ru} import ru._ class Person(val name: String, age: Int, blah: List[Int]) object ReflectionTest { def main(args: Array[String]): Unit = { def generate[T…

コンストラクタメソッドからオブジェクトを動的に生成する

一つ前のエントリの続き 次はcase classではなく、普通のクラスを生成する import scala.reflect.runtime.{universe => ru} import ru._ class Person(val name: String) object ReflectionTest { def main(args: Array[String]): Unit = { def generate[T](…

Scalaでリフレクションを使って、与えられた型情報から動的にオブジェクトを生成する

Scalaでも動的にオブジェクトを生成したいですね、そうですね。 早速リフレクションを使って動的にオブジェクトを生成します。 以下、覚え書き…もう少し効率よくできる気がする。 import scala.reflect.runtime.{universe => ru} import ru._ case class Per…

Cisco Meraki Goを買った

Cisco Meraki Go 法人向け Wi-Fiアクセスポイント 屋内用 PoE対応 無線LAN (デュアルバンド/802.11ac)【Amazon.co.jp 限定】発売日: 2019/06/21メディア: Personal Computers 普段は2万円くらいのCisco Meraki Goがタイムセールで16,400円になっていたのと、…

Scalaでapplyメソッドを引数に期待しているところにコンパニオンオブジェクトをそのまま渡しても良い

Spray-JSONのソースを読んでて、まぁそりゃそうかと思ったけど、こう書けるのかって改めて思ったので残しておきます。 scala> case class Person(name: String, age: Int) defined class Person scala> def test(constructor: (String, Int) => Person): Per…

Json4sのJSON ASTからScalaのオブジェクトを生成する

次は、Json4sのJSON ASTからScalaのオブジェクトを生成する方法について解説。 Play-JSONでのScalaオブジェクト生成 Json4sのオブジェクト生成の前に、Play-JSONにおけるオブジェクト生成方法について見てみます。 import play.api.libs.json._ import play.…

Json4sの使い方

前回のエントリからの続き。今回はざっとJson4sの使い方をおさらいする。 JSON文字列のパースと、生成 Json4sはバックエンドとしてJavaのJSONライブラリであるJacksonを使うjacksonパッケージと、lift-json由来のパーサーを提供するnativeパッケージの2種類…

Json4sについて、その機能と内部構造

Json4sの使い方と、内部構造についてのいくつかのこと 年明けからJson4sのメンテナーをやっている。 Json4sは、2012年に作られた歴史あるScala用のJSONライブラリで、Apache Sparkで使われていることもあり、割と広く使われている。しかし、ランタイムリフレ…

Scalatra 2.7がリリースされた

自分がメンテナンスに参加しているScala用のSinatra-likeなWeb Application Framework、Scalatraの最新バージョンがリリースされた。 scalatra.org 今回のリリースの最大の特徴は、Scala 2.13対応だけど、それ以外にも古くて使われていない機能をバシバシ削…

「教養としてのコンピューターサイエンス講義 」を読んだ

教養としてのコンピューターサイエンス講義 今こそ知っておくべき「デジタル世界」の基礎知識作者:ブライアン・カーニハン発売日: 2020/02/21メディア: 単行本 日常的にコンピュータを手足のように扱い、コードを書いて、やりたいことを実現している人たちか…

「ドメイン駆動設計入門」を買って、読んだ

ドメイン駆動設計入門 ボトムアップでわかる!ドメイン駆動設計の基本作者:成瀬 允宣出版社/メーカー: 翔泳社発売日: 2020/02/13メディア: Kindle版 先日開催されたObject Oriented Conferenceに象徴されるように、最近設計論の議論が盛んでですね。設計論と…

MacBook Proを修理した

うっかり事故でMacBook Proに液体をこぼして起動しなくなり、修理へディスプレイもロジックボードもキーボードもSSDも交換になって、「もう全部変わってますね」って店員さんに言ったら、「はい、ファン以外は全部交換になりました」って言われた‥"ファンだ…

「リファクタリング第2版」を読んだ

リファクタリング(第2版): 既存のコードを安全に改善する (OBJECT TECHNOLOGY SERIES)作者:Martin Fowler出版社/メーカー: オーム社発売日: 2019/12/01メディア: 単行本 初版、たぶん読んだはずだけど、全然覚えていないので第2版を購入。JavaScriptには慣れ…

「レガシーコードからの脱出」を読んだ

レガシーコードからの脱却 ―ソフトウェアの寿命を延ばし価値を高める9つのプラクティス作者:David Scott Bernstein出版社/メーカー: オライリージャパン発売日: 2019/09/19メディア: 単行本(ソフトカバー) 「レガシーコードからの脱出」を読んだ 「レガシ…

「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メディア: エレクトロニクスこの…