既にコンソールで作ったRDSインスタンスをCloudFormation管理下に移動する

雑な人が雑に作ったRDSがあります 大学時代の私が適当にコンソールで作ったS3やRDSなどのリソースをAWS CloudFormation(CDK)で管理することにしました。 設定の変更やアップデートのデプロイを楽にしたかったので。 S3は普通にインポート出来たのですが、 RDSのインポートにちょっと詰まったのでメモします。 雑にインポートしてはダメ CloudFormation cannot update a stack when a custom-named resource requires r

:
経験5年のHaskellユーザがScalaを仕事で半年使ってみた

haskell-scala-java ちょっと前までScalaを書いていたので、 Haskell好きな人がScalaを書いた感想を書きます。 タイトルは経験15年のOCaml ユーザーが Haskell を仕事で半年使ってみた - camlspotter’s blogの模倣です。 あくまで1ユーザの感想です。 Scalaに慣れてしまうと違和感を忘れてしまうと思ったので、当時箇条書きで雑にメモしていたものを参照して書いています。 逆にScala使いがHaskellを知るメモに役立つかもしれません。 H

:
Windows Terminalでmsys2のzshをscoopのPATHを有効化しつつ使う

Windows Terminal良いですね。やっとWindowsにも標準的に使える、まともなターミナルが出てきたかと感無量です。 PowerShellとかシェル部分は面白かったのに、ターミナルエミュレータがつらすぎて使う気になりませんでしたからね。 ただ標準設定でmsys2には当たり前ですが対応してないのでちょっと躓きました。後から考えると冷静にヘルプを見るだけなのですが、ちょっと詰まったのでメモついでに書いていきます。 参考文献 Windows Terminalでもmsys2を使おう - Qiita

:
AWS CDKでECSにデプロイするDockerイメージのマシな管理方法

大前提の問題 AWS CDKを使ってECSへの継続的なデプロイを行う場合、単純にイメージをfromEcrRepositoryなどで指定すると、 Dockerイメージのみが変更された時、素直にイメージを指定しているだけだと変更が検知されないのでECSタスクの更新が行われません。 主な解決策 3つあります。 ContainerImage.fromAssetを使う イメージのダイジェストをイメージのタグとして付与する gitコミットハッシュをイメージのタグとして付与する それぞれ利点や問題点を書いていき

Pythonでwebスクレイピングをする時に必要だった知識

Pythonでスクレイピングする仕事が降ってきました 半月前ぐらいに、 Pythonでwebサイトをスクレイピングする仕事が降ってきました。 自分が始めるならHaskellやScala、他人が読み書き出来ることを要求されてもTypeScriptあたりで書くのですが、まあ既存のスクレイピングコードがPythonでそれに追加することを要求されたので仕方がありません。 と言うわけでちょっと書いていました。仕事があるたびに即座に(その日以内あたり)終わらせていた気がするので、あまり本格的にはやっていませんが。 必

SlackとTwitterにマルチポストしたかったのでmikutterプラグインを書きました

timesチャンネル作ってしまった 今の会社のSlackにはtimes文化がありますが、 times文化とは: またSlackでtimesを始めてしまった|ばんくし|note 私自身はChatwork時代からプロジェクトに関連する話(〇〇ライブラリ使うべきかなあとか)みたいなことは、全部プロジェクトのチャンネルに垂れ流していて、プロジェクトに関係ない会社の話はrandomに、個人的な話はTwitterに書いていて、それで不自由していませんでした。 完全に技術的な話(〇〇言語のここが分からないとか)みたいな

AWS CDKのaws-lambda-nodejsパッケージが壊れていたので修正しました

概要 aws-lambda-nodejs module · AWS CDK のデフォルト設定での動作が壊れていたので、修正して fix(lambda-nodejs): docker build is not working by ncaq · Pull Request #10885 · aws/aws-cdk というpull requestを送ってmergeされました。 aws-lambda-nodejsは便利 aws-lambda-nodejs module · AWS CDK と言うモジュールがあ

mozc-utのebuildを書きました

例えば「汚言症」が変換できないからストレスだなあと思ってたら、 Mozc UT Dictionary では辞書に含まれてるらしいですね。 でもカスタムビルドするのは管理が面倒、組み込みにすれば外部辞書では出来ない優先順位付けとかが出来ると言ってもなあ、と思って外部辞書として読み込もうとしましたが、辞書数件数制限に引っかかって出来ませんでした。 仕方ないので組み込みビルドすることにしましたが、 Gentoo向けのebuildとかないみたいなので、自分のoverlayに書く必要があるみたいですね。 mozc-u

:
使えるようになった→Emacsのlsp-modeのlsp-eslintはまだ使うべきではなかった

追記: lsp-eslintは使えるようになっていました Eslint - LSP Mode - LSP support for Emacs に載っているようにautomatic installにも対応して、セットアップが簡単になり、使えるようになったみたいです。 未だvscode-eslintはnpmでインストールできていませんが、 zipファイルをGitHubあたりからダウンロードして展開しているようです。 私の場合ファイル開く時の自動選択でeslintを選ぶとEmacsが応答なしになったので注意して

eslint-cliやeslint_dを動かせるTypeScript向け.eslintrc.jsの書き方

eslint_dが爆速 ESLintの速度が我慢ならないので色々調べてみた結果、 mantoni/eslint_d.js: Makes eslint the fastest linter on the planet が爆速であることを知りました。 存在は知っていましたがこんなに速くなるとは思っていませんでした。 eslintd-fixにはカレントディレクトリの問題があります flycheckはプロジェクトディレクトリを探索するので問題ないのですが、 aaronjensen/eslintd-fix: E

AWSのPrivate Subnetに配置したRDSになるべく持続的リソースを使わずに直接コマンドラインからアクセスする

大変混乱したのでメモします。 助言ありがとうございます! @ncaqaws上のec2にec2-instance-connect とssm-agentがインストールされていて、AmazonEC2RoleForSSMあたりがアタッチされたroleをinstance profileとして設定されていればできました(試したのは amazon-linux2ですが)https://t.co/qd40m7PBgN — 窓際じゃなくなった眼鏡さん (@calkinos) October 12, 2020 踏み台サ

:
AWS CDKのrole-arnをプロジェクトごとにファイルに書く

2021年3月11日追記: どうやら意味がないらしい 今日試してたら効いてませんでした。上位のアカウントを使って気がついてなかっただけのようです。ドキュメント通りやったのですが… 本文 単純な話ですがググり方によって出てこなかったのでメモ。 CloudFormationの実行ロールを作ってそれで実行しています。 いつの間にかCloudFormationがIAM Roleに対応していました! | Developers.IO 他のリソースを誤って破壊したくないので。 これがプロジェクトごとにアカウントが異

PandocをライブラリAPIで呼び出す場合(Hakyllなど)に東アジアの文字列に余計な空白が入ってしまうことの解決策

問題 私はちょっと前から句読点の種類を「,.」から「、。」に切り替えています。 それで気がついたのですが、このサイトで読点を打った直後に改行すると余計な空白が入ります。 その問題の原因と解決策は知っていたはずです。 それは以下の記事を読むと分かり易いでしょう。 日本語Markdown文書をPandocする際に「余計な空白」をどうにかしたい - Qiita 私はこの問題に対処していると思っていました。 Hakyllで日本語文中の余分な空白を削除する ブログを Hakyll に移行した | Tosainu

Scalaの環境構築をSDKMANからCoursierに移行しました

理由 SDKMANの設定は常に.profileのシェルスクリプトを動かすことになってログインログアウト時などに面倒なため。 Coursier Setupはダウンロードされたバイナリにパスを通すだけなのでシンプルです。 どうせCoursierはScala開発環境を構築する上で入れておいたほうが楽なので入れますし。 方法 Coursier を使って最速でScalaの開発環境を整える - ぶらっ記ぃが参考になります。 GraalVMのおかげでブートストラップが楽で良いですね。 Coursier Setu

msmtpでsmtp-relay.gmail.comを使うにはdomain設定が必要なことがある

sendmail互換システムがプログラムに必要になったのですが、 Docker内部でデーモンを動かすのはだるいし、 sendmailコマンドごときにコンテナを分けるのもだるいです。 でもデーモン無いと再送とか出来ないしなあと思っていたのですが、よく考えてみるとSMTPでメールを飛ばした後はフルマネージドなサービスが処理するのであまり考えなくても良さそうでした。 そこでSSMTPの後継らしい、 msmtp と言うデーモン不要のsendmailコマンドを動かそうとしていました。 しかしsmtp-relay.gm

:
TypeScript環境でもEmacsのeslint-fixを動かすための設定

eslint周り再調査して気がついたこと。 気がついてなかったけどeslint-fixが最近動いていなかった codesuki/eslint-fix: Fix current file using ESLint --fix と言うeslint --fixを動かすパッケージがあるのですが、最近動いていませんでした。 何故か調べた所 /home/ncaq/Desktop/goodbye-rfc-2822-date-time/src/GitHub.ts 0:0 error Parsing error:

Gentoo(クライアント側)でL2TPでVPN接続する

networkmanager-l2tpを使う 他のディストリビューションと同じようにNetworkManager L2TP pluginを使います。 Gentoo Linuxでnetworkmanager-l2tpをnm-appletを使って設定する時はgnome USEフラグを付ける - ncaq が今も必要かは調べていません。 strongswanのUSEフラグでワークアラウンドする 今現在(2020-09-23) without CAP_CHOWN capability. socket dire

Emacsにelpyをpipenv環境でも動くように導入する

動機 他の人がPythonで書いたコードに継ぎ足しで書くタスクが発生したので、これを機に今まで雑にpython-modeとpython-language-serverとautopep8だけで雑に書いていた環境をちゃんと整備したかった。 elpy vs lsp EmacsでのPython開発環境と言えば jorgenschaefer/elpy: Emacs Python Development Environment が有名です。 しかし今言語環境構築するならLSPが前提みたいな所がありますよね。 La

sbtのマルチプロジェクトでテスト用Scalaクラスを他のプロジェクトから利用する方法

プロジェクトの状態 rootプロジェクトにテストに使うためのクラスがあります. テスト用データ生成などを行うutilプロジェクトでそのクラスを利用したくなりました. しかしrootプロジェクトのテストに使うためのクラスはテスト時にしかコンパイルされないため, 普通にdependsOnしても利用できません. しかし sbt Reference Manual — マルチプロジェクト・ビルドをよく読めばちゃんと解決方法が書いてありました. dependsOnのクエリを弄る方法 sbtのutilセクションに

libinput-1.16.0にアップデートしたらxkeysnailが動かなくなりました

突然PCが一切のキーボード入力を受け付けなくなって焦りました. 最初はxmonadの問題なのかと思ったのですが, 調べたら xkeysnail がキーボードの入力を受け付けるけれど何も出力しないという問題を発症していることに気が付きました. 色々ダウングレードしたり再ビルドした結果, libinput-1.16.0だと動かなくて, libinput-1.15.6だと動くことが分かりました. とりあえず自前のebuildに依存設定を書いておきましたが, この先どうするのでしょう. libinputのバグなら報

タブレットを買ったらメールサーバがエラーを返すようになったのを解決

Fire HD 10(第9世代)を購入しました - ncaq でタブレットを買ってK-9 Mailをセットアップしたら, PCのThunderbirdがログインエラーを起こすようになりました. とりあえずDovecotを再起動したら解決したのですが, その後も定期的にエラーを起こすのでちゃんとログ見て検索しました. エラーメッセージ dovecot[172687]: imap-login: Maximum number of connections from user+IP exceeded (mail_m

Fire HD 10(第9世代)を購入しました

Fire HD 10 これです. 購入した理由 Amazon、7月24日から63時間「タイムセール祭り」。Fire HD 10やASUSディスプレイ - AV Watch によってセールで1万円になってたので購入しました. 2019年10月に発売されたモデルなので, そろそろ新型が来てもおかしくないのですが, セール動向を見るに新型が来てもしばらく1万円にはならないだろうと思って購入しました. 前々からタブレットが欲しかったのです. 何故かというとKindleを使ってジョジョの奇妙な冒険を読むと

日本語入力の切り替えをトグルからステートレスに切り替えました

日本語入力の切り替え方式を変えることにしました 私はUSキーボード使いでなおかつDvorak使いなので, Ctrlキーに近いC-;で日本語入力をトグルしていました. しかし, 日本語入力をトグルする形式は, 既に日本語なのに日本語状態に入ろうとして解除してしまうなどの切り替えミスがよく発生してしまいます. 一応トグルであることのメリットも存在して, 使うキーが少なくキーバインドを圧迫しないことがメリットなのですが. 最もキーを使うFirefoxやEmacsでC-.を使ってなかったり, C-,があまり使われ

Smartparensを使っていてScalaを書くと波括弧の入力時に改行が自動挿入される問題の解決

問題 ScalaではタプルのVectorへのmapを書く時などに, タプルにマッチする時はcaseが必要になることがあります. Scala 3では不要になるようですが. これは複数個引数とタプルを区別するためです. その時パターンマッチの外側には波括弧{}が必要になります. そして私は, Smartparens をグローバルに有効にしているので, 波括弧を入力すると改行が入ってしまいます. 確実にタプルの対象に対してmapするときは一行で問題ないのに. 新規に波括弧を入力する時は問題ないのですが, タプル

Emacsのlsp-modeを新しいディレクトリでも自動的に起動するにはlsp-auto-guess-rootを有効にする

LSP Mode - Language Server Protocol support for Emacs は各言語のhookにlsp関数をかけていても, これまで開いたことのないディレクトリでは, LSPを有効にするかどうか聞いてきて, importすると起動して.lsp-session-v1に記録されて次回からは自動的に起動します. 暫く使っていてimportすることを選ぶこと以外が無かったので, 自動的にimportさせるようにします. ちょっと調べただけだとすぐに出てこなかったのでメモしておきます.

Windowsをブートさせるためにインストールしているos-proberがgrubのLinux起動メニューを重複して作ってしまう問題の解決

os-prober os-prober はインストールしておくだけで, grub-mkconfig -o /boot/grub/grub.cfgした時にWindowsを検知して起動メニューに追加してくれる優れものです. と言うわけで数年前からずっと使っていました. 問題 ところが近年少し困ったことが発生していました. それは重複したエントリを作ってしまうことです. どういうことかと言うと, ちょっと前のos-proberはWindowsしか検出しなかったのですが, 今はLinuxディストリビューション

:
ScalaTestのParallelTestExecutionを使ってスイート内のテストケースをシンプルに並列実行する

sbtのテストスイート並列実行機能と混同しやすいので注意 クラス単位で並列実行するか クラス内のテストケースを並列実行するか は全く別の話です. ここは混同しやすく混同した解説がネット上に存在して私も混同してしばらく錯乱していました. ここにはScalaTestを使った後者のクラス内のテストケースを並列実行する方法について書きます. 前者については sbtにおけるテストの並列実行の設定詳細解説 - xuwei-k's blog を読むと良いと思います. なお私が作業しているプロジェクトではforkを使

GTX 1080 TiからRTX 2080 Tiに買い換える必要性が無かったと買ってから気がつきました

ものすごくアホなことをやってしまったので記念に記事を書きます. 事の発端 友人が「しばらくVR出来る環境に居ないから」という理由で VIVE Cosmos を送ってくれました. 前からwebプログラミングについて教えてもらう代わりに譲渡するみたいな話をしていましたが, とりあえず今は見返り無しで送ってくれました. 感謝感謝. セットアップしようと思ったのですが, これDisplayPortしか対応してなくてHDMIだとダメなんですね. うーん困りました. 今のグラフィックボードはHDMIとDVIしか出力端

:
OCamlをテキスト処理のために使ってみました

欲しかったもの KEINOS/google-ime-user-dictionary-ja-en: ✅GoogleIME用カタカナ語辞書プロジェクトのアーカイブです。Project archive of Google IME user dictionary from Katakana word ( Japanese loanword ) to English. を追加してみたら短い文字が鬱陶しかったので読みが1文字の単語を消したかった. こういう小さなスクリプトを書く時こそ今まであまり触ったことのない言語を

:
Emacs 27でPackage cl is deprecatedと表示されないようにする

Emacs 27がGentooでハードマスクを解かれました カラー絵文字などが使えるようになりました. UbuntuでmasterのEmacsを--with-cairoビルドしてカラー絵文字見る - つうさにメモブログ 毎回起動時にPackage cl is deprecatedと表示されてめっちゃ鬱陶しい 毎回起動時にPackage cl is deprecatedと表示されますしinit.elを見ててもflycheckが警告してきて鬱陶しいです. 自分が書いて無くてもcsharp-modeとかel

:
xkeysnailを使ってSkypeとSlackとDiscordで改行と投稿のキーバインドを統一する

問題 各チャットツールで改行と投稿のキーバインドがバラバラなので覚えられない. 参考: 各ツールにおける改行と投稿のキーバインドの違いがひどいのでまとめた - Qiita 理想の動作 mikutterでは, C-mは改行, Enterは送信にしているのでそれに統一したいです. 本来この2つは同じ動作にするべきなのかもしれませんが軽く押せて便利なので… 使っているのがSkype, Slack, Discordぐらいなのでそれに対応すれば良いです. 最近はSkype使ってないですしそもそもそれ以外のGNU

YesodのgetAuthEntityは内部でrunDBを使っているのでデッドロックに注意しましょう

getAuthEntity Yesodの getAuthEntity はデフォルトでrunDBを使っています. これがどういうことなのかと言うと, これに依存しているmaybeAuthなどを使うとYesodDBなどを見ることなくデータベースコネクションを取ってきてしまうため, runDBの内部で使ったりするとデッドロックを引き起こす危険性があります. ユーザ情報を取ってくるので当然と言えば当然なのですが, Cookieに入っているものと混同しやすくもあります. 権限確認などを行う場合注意しましょう.

ScalaTestでforeachなどを使ったテストのグループ分けをするにはbehaviorを使う

ScalaTestでは"foo" should inのようにテストを書いた後it should inとテストを書くとテストをそのキーワードでグループ分けをしてくれます. しかしforeachなどループでデータだけサクッと差し替えるようにテストを書いた場合その方法ではうまく行かなくて, 毎回itで済ませるとグループ分けはしてくれないし同じキーワードを宣言しても同じグループには割り当てられません. 毎回違うグループが作成されます. ScalaTest 3.1.1 - org.scalatest.flatspec

:
MathJaxを含むローカルのHTMLをPNGに変換する

やりたいこと Pythonから呼び出せる形式でローカルのMathJax(MathML)を含むHTMLファイルをpngに変換する. ページはレンダリングされていなければならない 全ての要素を含んでなければならない(スクロールバーがあるとダメということ) 余計な余白があってはならない ノイズが入ってはならない 選定技術 SeleniumとHeadless Chromeを選定しました. 参考文献: Python: Selenium + Headless Chrome で Web ページ全体のスクリーンシ

zinitでeval dircolorsを使って色定義をする時はシングルクオートを使う

生産性向上の為自分の.zsh.dをsubmoduleでlibを管理する方法からzinitを使うように書き換えていました. seebi/dircolors-solarized: This is a repository of themes for GNU ls (configured via GNU dircolors) that support Ethan Schoonover’s Solarized color scheme. が設定できなくて困っていました. これはzinitで読み込むだけだと設定出来な

JacksonでJSON文字列をScalaのcase objectにマッピングする

文字列をそのまま使うのではなく, 列挙型として扱いたい. Enumerationを使う方式なら, 公式にcom.fasterxml.jackson.module.scala.JsonScalaEnumerationとしてそのまま用意されています. Enumerations · FasterXML/jackson-module-scala Wiki でもEnumerationは使いたくないですよね? 何が嫌かってValueが型になるので型自体を参照するのに2段階ネストしないといけないのがイヤです. あと後々c

Emacsでhelp-fns+の代わりとしてhelpfulを使ってみたら代わり以上に良かった

help-fns+の消失 Emacsに help-fns+.el というパッケージがあります. これはまあ色々とコマンドを提供しているのですが, 私が主に使っていたのはdescribe-keymapでした. Emacsの普通のdescribe-variableで例えばhelpful-mode-mapのようなキーマップを参照すると, 悲しい のようにキーコードが数字で表示されてしまいます. これでは一部の変人以外は何がなんだかわかりませんね. describe-keymapで呼び出すとキーコードではな

HaskellプログラムをGitHub Actionsでビルドしてクロスプラットフォーム向けにバイナリをReleaseにアップロードする

参考サイト GitHub ActionsでRustプロジェクトをクロスビルドしてリリースする - 詩と創作・思索のひろば GitHub ActionsでElectronアプリのクロスプラットフォームバイナリを配布する | Web Scratch 作ったプログラム ncaq/homura-stopwatch このプログラムの作成自体は他のプロジェクトのビルド待ち時間に書いてたら即座に終わりました. hourglass :: Stackage Server という簡単に時間変換が出来るライブラリのおか

zoom 3.5が私のLinux環境でカメラの映像を取得できないことの解決

問題 zoom 2.7だとカメラ映像を取得できるのに, zoom 3.5だと真っ暗になります. なおobs-studioにも同じ問題が存在し, guvcviewでは問題は存在しません. 環境 2020-04-02T18:49:33 ❯ uname -a Linux strawberry 5.4.28-gentoo #1 SMP Tue Mar 31 11:42:12 JST 2020 x86_64 AMD Ryzen Threadripper 1950X 16-Core Processor Authe

Java側からScalaのforeachメソッドをcallする

問題 ScalaのCollectionのforeachメソッドの返り値型はUnitである. Javaでラムダ式を渡すと返り値型がvoidになり自動変換されないのでコンパイルエラーとなる. 解決策 mapを使う mapを使ってreturn null;とでもしておく. すごくダサい. 多分JVMは最適化してくれるでしょうがnullが詰まったコレクションが新規作成されてしまうのも気になるところ. scala.runtime.BoxedUnit.UNITを使う return scala.runtime.

sbt v1.3.8ではfork設定をしていないとテンポラリディレクトリがクリーンアップされないバグがあるようです

問題 sbt testを動かすたびに/tmpにsbt_7ab6d679/のようなディレクトリが作られて, その中にjarが展開されて, testが終わっても/tmpのディレクトリがクリーンアップされないためメモリを大量に使うようになっていました. またsbt runで起動したwebサーバがrunを終了させてもポートを解放してくれなかったため, 一々sbtを終了する必要があります. 原因 sbtにプロジェクトを移したらアプリケーションがOutOfMemoryErrorを吐くようになった時の対処法 - n

:
私の.emacs.dをelpaをgit管理下に入れる気の狂った管理方法からleafに移行させました

概要 ncaq/.emacs.d: my Emacs config を気の狂った管理方法からleafに移行しました. 参考文献 conao3/leaf.el: Support your setting init.el like use-package [正式リリース]leaf.elで雑然としたEmacs設定ファイル「init.el」をクリーンにする - Qiita use-packageからの移行のすゝめ - leaf.elでバージョン安全なinit.elを書く - Qiita [2019年アップデ

:
Setup.hsでcabalのフラグを取得して動作を変える

yesodとwebpackを協調させてTypeScriptをビルドする方法 - ncaq に書いてあるように私はSetup.hsで事前にアセットをビルドしていました. しかしこのpreBuildを使う方法ではどうやってもcabalのflagが取得できないようで悩んでいました. flag取得して挙動を変える方法がわかったので書きます. まずpackage.yamlに custom-setup: dependencies: - base - Cabal - process と書き

英語に弱すぎたのでgoodbye-rfc-2822-date-timeという英語の日時を日本語に変換するブラウザ拡張を作って1年強使っています

ソースコードやダウンロードのリンクはこちら. GitHub: ncaq/goodbye-rfc-2822-date-time: I hate the date and time notation method like RFC 2822. This extension converts time notation to native language as much as possible. Firefox: goodbye-rfc-2822-date-time – 🦊 Firefox (ja) 向け拡張

Gitのコミットメッセージでめっちゃタイプミスをするのでそろそろタイプミスを検出するhooksを書きました

動機 私のGitコミットメッセージは以下のプレフィクスから始まります. added: 機能や関数などを追加した時 changed: ユーザから見てわかるような変更をした時(例: ボタンの色を変える) cleaned: コードフォーマッタなど本質的でない変更をかけた時 deleted: 機能や関数などを削除した時 fixed: バグを修正した時 modified: ユーザから見てわからない変更をした時(例: 内部アルゴリズムの変更) renamed: ファイルや識別名の変更 updated: ライブラリな

Scalaのcase classのフィールドにドキュメンテーションコメントが書けなくて悲しい

case classのフィールドを素朴に定義しました. case class Book( /** 一意な番号 */ var isbn: String) これでフィールドにドキュメンテーションコメントが付けられると思ったのですが, これではつかないのですね. コンストラクタのフィールドではなくclassのフィールドにして, コンストラクタ内で初期化すれば付きそうな気がしますが, ドキュメントのためにコードを冗長にはしたくないですね… 調べたのですが@paramを使ってnameを指定して書い

Scalaで定義したcase classのcopyをJavaから呼び出したかったが無理なのでcloneで妥協しました

copyは実に良いメソッドです. Haskellのレコードのフィールド更新やJavaScriptのスプレッド構文のように使えます. でも何故かJava側から呼び出せなくて困惑しました. ScalaのメソッドはJavaからスムーズに呼び出せるはずなのに. よく考えてみるとcopyメソッドはメソッドのデフォルト引数機能の存在を前提としたメソッドで, Javaにはデフォルト引数機能が無いんですね. このままでは既存のcloneを使ったコードが壊れてしまうのでScalaを使えない… と思いましたが, 冷静に考えてみ

:
ScalaとJavaを併用しているプロジェクトでsbt-java-formatterを使う

sbtで使えるJavaソースフォーマッタとして sbt/sbt-java-formatter: An sbt plugin for formating Java code があります. これの最新版0.5.0(0.3.0だとタスクが増えなかった…)を使っても, Javaソースが整形されなかったので首を捻りましたが, どうもこれが対象とするJavaソースは javaSourceの場所を参考にしているようですね. https://github.com/sbt/sbt-java-formatter/blob/48

google-oauth-client-jettyとjetty-serverのバージョンコンフリクトを解決する

google-oauth-java-clientの最新版にはバグがあります Jetty exception NoSuchMethodError: org.eclipse.jetty.server.Connector.setHost · Issue #397 · googleapis/google-oauth-java-client というバグで, 1.30.4から発生しています. これ回避方法探しましたが全く分かりませんでした… ではダウングレードすれば良いのではないかと言うとそう簡単な話でもない 1

:
sbtにプロジェクトを移したらアプリケーションがOutOfMemoryErrorを吐くようになった時の対処法

問題 OutOfMemoryError: Java heap space でこれまでgradleなどで動いていたアプリケーションが死ぬ. 原因 sbtはデフォルトではsbtと同じJVMでアプリケーションを動かそうとします. sbt自身にはメモリを使いすぎないようにリミッターがかかっているので死にます. By default, a forked process uses the same Java and Scala versions being used for the build and th

ポケモン剣盾 シングルバトル シーズン2初期 積み3タテ構築

シーズン2でランクが下がったあとマスターボール級に上がる1日間使ったPT. 上がったら7715位でした. 勝敗率は忘れました. 動機 竜舞したオノノクスで3タテしたい. オノノクス オノノクス ようき 151-199(252)-111(4)-72-90-163(252) 151-199-111-72-90-163 ようき A252 B4 S252 型破り 命の珠 逆鱗 地震 アイアンテール 竜の舞 竜舞した後は陽気より意地っ張りのほうが圧倒的に良いが, ミミッキュに死に出しした時に陽気だとS1