Category:

KtorでLocationsのPOST使う際の注意点

Ktor で Locations を使う際、普通にForm DataとしてPOSTすると404エラーになってしまう。 GET parametersの項 を参照すると、サポート対象の機能のはずなのに。 ちなみに、 Issue #601 もあがっているが、半年以上放置されている。自分もコメントを追加しておいた。 ここでは残念な方法ではあるが、いくつか回避策があるので、その方法を記載しておく。 エラーになるパターン このケースのように、Form Dataとしてパラメータを受け取ろうとすると、404エラーになってしまう。 @Location("/hoge") data class HogeParamater(val param1, val param2) routing { post<HogeParamater> { param -> // HogeParam Continue Reading

Posted On :
Category:

自分なりの最軽量・高効率のノマドワーク装備

今月から家庭の事情でノマドワークをすることになったのだが、コワーキングスペースで黙々と仕事をするのも性に合わないので、横浜近辺のカフェを巡りながら仕事をすることを前提に、最軽量・高効率のノマドワーク装備を整えることにした。(主にこだわったのは最軽量の方。わざわざ晒すほどの物でもないかもしれないww) 最終的な装備 装備一覧 装備品 説明 純正品重量 商品重量 リンク 13インチMacBook Pro 今後はTouch Barモデルに集約されることが予想されるので、慣れるためにTouch Barモデルを導入。CPUは第八世代の2.3GHzクァッドコア。メモリだけ16GBに。ヨドバシカメラで購入し8%ポイントバック。Chromeのタブを10くらい開き、DockerでDBコンテナを立ち上げ、IDEAプロジェクトを2つ開き、Nettyでアプリを立ち上げ、VS Codeを開いていても、性能面で問題を Continue Reading

Posted On :
Category:

IntelliJ IDEAとGradleタスクでコンパイラの出力先が異なる問題の対応

IntelliJ IDEAとGradleタスクでコンパイラの出力先が異なる状態になることがある。自分の場合は、新規プロジェクトを作成して構築中は一致していたのだが、一旦git pushしたものを改めてgit cloneしてからIDEAに取り込んだ際に異なる状態になった。 IDEAの出力先:out/productionの配下のclassesとresources Gradleの出力先:build配下のclassesとresources ちなみに、classesはソースのコンパイル先であり、resourcesはリソースファイルのコピー先である。 異なると何が問題かというと、gradleで実行したアプリケーションにおいて、ソースコードの変更を検知してAutoReloadしたい場合に、変更を検知できないことである。 ソースコード変更->IDEAでBuild->classファイルをIDEA Continue Reading

Posted On :

Google OAuth 認証の実装サンプル

Kotlin / Ktorでサンプルプログラムを書いていて、Google OAuth認証を実装したのだが、だいたい実装完了したタイミングで、 公式ページ を発見してしまい、このコードはお蔵入りになることが決定した(涙)。 サーバサイド含めて1日ぐらい格闘していたので、ただ捨てるのも忍びなくここに記載しておく。 シーケンス図 上記のシーケンス図の通り実装したが、全部書くのも大変なので、以下の2点だけ記載しようと思う。 ApplicationからGoogle Serversに対して認証済みかどうかを確認する処理 AuthRedirect画面の実装 Google APIsでOAuth 認証用のプロジェクトを作成 プロジェクトを作成する https://console.developers.google.com にてプロジェクトを作成する。今回はKotlin Ktor Sampleという名前で作成 Continue Reading

Posted On :
Category:

はてなブログのMarkdown記法のTips

はてなブログのMarkdown記法はだいたい直感的で特に苦労することもないのですが、たまにわからないものがありますので、メモっていきます。 Markdown記法のリスト内にコードブロック挿入 結論、Markdown記法やはてな記法では、Markdown記法のリスト内でコードブロックを書くことはできません。 しょうがないので、HTMLのpreタグで記載します。 OKパターン:HTMLのpreタグを使います。シンタックス・ハイライトはできません。 このように書くと、 * 項目1 * 項目2 <pre> hoge fuga </pre> 以下のようになります。 項目1 項目2 hoge fuga NGパターン:Markdown記法のコードブロック このように書くと、 * 項目1 * 項目2 “` hoge fuga “` 以下のように、1行コード扱いになってしまいます Continue Reading

Posted On :
Category:

Docker ComposeのTips

Docker Composeは複数のDockerコンテナをまとめて立ち上げることができる便利なツールである。 いくつかのケースについて実例をあげながら設定方法を記載していこうと思う。 別docker-composeのコンテナを参照する 1つ目のdocker-composeでDBを、2つ目のdocker-composeでWebアプリを立ち上げて、WebアプリからDBを参照するケースを考える。 基本的には、networkで同一ネットワークに所属するように設定し、external_linksで外部コンテナにアクセスできるように設定すればよい。 DB用docker-compose.ymlの設定 version: '3' services: postgres: image: postgres:latest container_name: "database" Continue Reading

Posted On :
Category:

使ったことのあるツール

使ったことのあるツールについて、気付いた時にメモっていく予定。 DB Client 汎用系 Table Plus https://tableplus.io/ GUIツール いろんなDBに対応している 現在も開発がストップしてない。 あまり深く使い込んでないのでよくわからないが、とりあえず、シンプルで使いやすくはある。 無料版だと2タブしかひらけないのでそこが辛い Eclipse DB Viewer GUIツール postgresql / oracle もいける クエリキャンセルができない DBのメタ情報もある程度見れる 検索結果をinsert文に変換してcopyしたりできる transctionあり/なしのモードを選べる だいぶ前に開発が止まっているので、再起SQLとか集計関数とかWith句とか、うまく動かないケースあり PostgreSQL psql コマンドラインツール クエリキャンセ Continue Reading

Posted On :
Category:

食べられる野草

江戸川と利根川をつなぐ運河の河川敷でお花見ついでに河川敷で野草を採集した。 採集した野草は以下の4種類。 藪萱草(ヤブカンゾウ) 菜の花 つくし 野蒜(ノビル) 藪萱草(ヤブカンゾウ) 見た目 百合っぽい感じ 根元から、扇状に分かれている 大きくても20cmくらい 採り方 根元からブチっとちぎる 成長した葉っぱは多分ちょっと固いので、適当にちぎって捨てる 花もべられるらしい 食べ方 下処理 根元から7cmぐらいだけを残し、成長した葉っぱはちぎってのぞく 成長した葉っぱも普通に食べられそうな気配はあったが、初だったので美味しそうな部分だけに おひたしにして 湯がく→流水で熱をとる→絞る→カツオブシと醤油をかける→食べる くさみ、エグミは全くなく、ほんのり甘みがある シャキシャキしてて美味しい 生で 根元3cmぐらいを食べてみた ほんのりエグミあり でも普通に甘くて食べられる お味噌汁で 長ネ Continue Reading

Posted On :
Category:

業務改善の進め方

考え方 「利用者が困っていることだけを解決する」という対応を何年にも渡って続けていると、ツギハギだらけのメンテナンス困難なシステムが出来上がってしまう。できるだけ業務の本質(やりたいこと)を捉えて、それを実現するシンプルな業務フローとシステムを提供するという考え方で対応する。 進め方 該当業務の目的を聞く やってる本人も良く分かってないことも多いので、ヒアリングしながら一緒に考えるイメージ 業務フロー全体を聞く とりあえずヒアリングしながら箇条書きで エッジケース(特殊なケース)を聞く エッジケースを拾えていないと、〇〇のケースでは前のシステムを使う、といったダブルスタンダードが発生する可能性あり エッジケース専用の機能は複雑になるので作りたくない エッジケースもカバーできる、汎用的な機能の提供を検討する 多少使いにくくても、エッジケースは発生頻度が低いので、問題になりにくい 利用者の困っ Continue Reading

Posted On :
Category:

IDEおよびエディタのメモ

何か便利なことを発見したり、困ったことが発生したら、ここに追記していく。 Intellij IDEA java scala kotlinの開発に利用している。 まず、jetbrains toolboxをインストール https://www.jetbrains.com/toolbox/app/ toolboxを起動して、GUIからインストール Terminal IDEAで開いているプロジェクトのアプリ起動やDB起動などはIDEAのターミナルから実行すれば、エディタとターミナルが紐づけれるので迷わずに済む。 Gradle 依存関係の解決をできる。Auto Refreshにしておくとbuild.gradleを触ったら勝手に依存関係を解決してくれる Project Structure Project -> Modulesの階層がある Project プロジェクト全体の汎用設定を行う Modu Continue Reading

Posted On :