What is it, naokirin?

Vue.js + TypeScriptのプロジェクトで循環参照などの問題のあるファイルを検知する

最近、個人開発ではVue.js + TypeScriptをちまちまと書いています。 フロントエンドをがっつり書いていると、開発によってファイル数が増えていくとともに、依存関係や宙ぶらりんなモジュールができたりと言ったことが起きてしまう場合があります。 そこで、…

Vue.jsのストアライブラリ Piniaを使ってみる

Piniaとは Vue.jsを使う場合に、特にSPAの開発をしていると、クライアント側でグローバルな状態を共有したいことが多々あります。 これまではVue.jsでこのような手段として、ストアライブラリのVuexが使われることが多かったかと思います。 一方でVuexは、v4…

JestでMock、Spyを使ってみる

Jestは、JavaScriptのテスティングフレームワークです。 一般的にテスティングフレームワークは、モック機能は別ライブラリとなっていることが多いのですが、Jestには組み込みのモックライブラリが存在しています。もちろん他のモックライブラリを利用するこ…

TypeScriptで関数の戻り値の型を利用する

久々に小ネタ的な備忘。 タイトルの答えは以下です。 const func = () => { ... }; type FuncReturnType = ReturnType<typeof func>; ただし、 ReturnType が使えるのは TypeScript 2.8からです。 以下は雑記です。 ライブラリのFactory関数の戻り値に型をつけたい 最近、</typeof>…

PyO3でRustからPythonを呼び出してみる

Rustに限らず、静的型付き言語で実行時にスクリプトを読み込んで機能拡張できるようにしたいことがたまにあります。 今回はPyO3を利用して、RustでPythonを呼び出してみます。 なお、PyO3はPythonからRustを呼び出すこともできますが、今回はRustからPython…

Rustでvalidationを実行する

Webアプリケーションサーバのフレームワークなどでは、受け付けたリクエストのデータが適切かをチェックするためのバリデーション機能があります。 Rustでは汎用的なバリデーションのクレートとして validator が存在しており、こちらを使う機会があったので…

Webサイトの入力をtextlintでチェックして、正しい日本語の記述を補助する

普通に日本語チェックするのめんどいよねーという話が定期的に上がるけれど、有料のサービス組み込むほどじゃない、ということで、textlintで気軽にできないかなと思い立ったのでやってみました。 なんとなくRailsにActiveAdmin突っ込んで、管理画面のフォー…

RustのWebフレームワーク warp を使ってみる

ポケモンを衝動買いしたものの、全然やる暇がないですね。。。 時間は作るものらしいので、ポケモンやる時間作ります(現在進行系でブログ記事に時間を使ってますが)。 今日は、ちまちま作っているOSSの fakey-cognito で使っている RustのWebフレームワー…

Rustの宣言的マクロを書いてみる

Rustには、宣言的マクロ(Declarative macro)と手続き的マクロ(Procedural macro)があるのですが、今回は比較的書く機会の多い宣言的マクロについて記載します。 宣言的マクロとはなにか? Rustでは、メタプログラミングの機能としてマクロが存在していま…

Spring Data JPA (+ Kotlin)でレコードに作成日時、更新日時を設定できるようにする

本日は11月23日、新嘗祭の日ということで、ありがたくご飯を食べながら記事を書いていこうと思います。 (キンロウカンシャのひ?キンロウってなんですかね…? ) 今日は、Ruby on Railsでは当たり前のようにDBに生やす、 created_at と updated_at をSprin…

Vue Router で遷移前、遷移後に処理を行う

最近はもっぱら電子書籍を買うことが多くなりましたが、物理スペースを気にせず一気に買えるので、積み本が増えてしまっている今日このごろです。 今日は、Vue.js の Vue Routerを使う際に、「遷移時に毎回処理をしたい」といったことがあったので、その際に…

kotest(旧KotlinTest)でSpring Securityのテストをする

最近はちまちまとKotlinとSpringBootのアプリケーションを勉強しています。 SpringBootの場合、Kotlinでも、JUnitを使うほうが何かとサポートが手厚く、Web上のドキュメントも豊富ですが、今回は勉強ということでkotest(旧KotlinTest)を利用してみました。…

無料のデータ分析サービス Mi-Analyzer のサーバー構成を解説します!

Mi-Analyzerを4月23日にリリースしました! --- 2021/11/7 追記 --- すみませんが、Mi-Analyzerのサービス提供は終了しました。 多少お時間をいただく可能性が高いですが、今後、OSSとして一部公開を目指しています。 --- 追記終わり --- Mi-Analyzerはスプ…

Kotlinの初期化について今さらまとめておく

前回は、コルーチンについてをまとめました。 naokirin.hatenablog.com 今回は初期化についてをまとめておきます。 初期化の順序 突然ですが、まずは各初期化処理がどの順序で呼ばれるのかを把握しておきます。 class User(val name: String, val age: Int) …

Kotlinのコルーチンについて今さらまとめておく

前回の記事で、コレクション関数をまとめました。 naokirin.hatenablog.com 今回はコルーチンについてまとめておきます。 コルーチンとは コルーチンはある処理を中断・再開できるインスタンスを指します。 スレッドもこのような動作を行うことができますが…

Kotlinのコレクション関数について今さらまとめておく

前回の記事で、スコープ関数をまとめました。 naokirin.hatenablog.com 今回はコレクションを操作する関数をまとめておきます。 今回紹介する関数はすべて、もとのオブジェクトを変更せずに、操作後の結果を別のオブジェクトとして返却するようになっていま…

Kotlinのスコープ関数について今さらまとめておく

久々にKotlinを書き始めたものの、1年以上間が空いているので、ざっと言語仕様と標準ライブラリについてを学び直し中です。 そこで、Kotlinの特徴的な機能の一つである「スコープ関数」をまとめておくことにしました。 スコープ関数とは Kotlinにおけるスコ…

Juliaで簡単なWeb APIサーバーを建てる

最近、データ分析した結果をフロントエンドのサーバーに返す、Juliaのバックエンドサーバーを実装していました。そこで、そのコアとなる実装を紹介し、Juliaで簡単なWeb APIサーバーを実行できるようにするためのソースコードを紹介します。 手っ取り早く実…

Juliaでテスト & モック

Juliaでのユニットテストの書き方と、やや踏み込んだコードを書いたときに重宝するモックについてを記載します。 バージョン Juliaでユニットテスト @test でテストする @testset を利用してテストケースをまとめる @test_throws で例外の発生をテストする …

Juliaで機械学習入門(2)〜ニューラルネットワーク〜

今回はJulia & ScikitLearn で有名なアヤメのデータを用いて分類をやってみます。 前回と同じく Julia v1.2.0です。 Julia でニューラルネットワーク まずは必要なパッケージを追加、インポートします。 In [ ]: ] add ScikitLearn In [ ]: ] add Plots Stat…

Juliaで機械学習入門(1)〜線形回帰〜

Julia&機械学習に入門してみます。 そこでまずは基本的な実装についてを色々やっていってみようと思います。 今回は線形回帰をやってみます。 Juliaはv1.2.0を利用しています。 Julia自体にも機械学習用のパッケージが存在しますが、今回はScikitLearnを使…

Rails のモデルを整理しよう

Rails では様々な機能を使って、共通化や抽象化、シンプルなコードへの書き換えなどを行えるようになっています。今回はモデルに焦点を絞り、それらをまとめていきたいと思います。また、整理を始める前に気をつけるべきことをまとめておこうと思います。 Ra…

Rails migrationで使うデータ型を考える

ざっくり migration で指定するデータ型について書いておきます。 型の種類 文字列の扱い 小数の扱い ID パスワードの保存 まとめ 型の種類 Rails の Migration で指定できるデータ型としては一般的に以下があります。(今回の説明のため primary_key は除い…

kaminari に入門して、ページネーションしよう

github.com kaminari といえば、Rails などでページネーションするための gem です。 今回は Rails に導入してみて、ページネーションしてみることにします。 今回は Rails 5.2, kaminari 1.1.1 で行っています。 kaminari をインストールする 確認用に User…

Ruby on Rails の has_secure_password のコードを読んでみる

最近は個人アプリ開発だと OpenID Connect などで済ませてしまうかもしれませんが、Ruby on Railsで直接パスワードを記録する際にデフォルトで利用できる has_secure_password メソッドの実装を読んでみました。 読んだのは Rails v5.2.3 になります。 has_s…

Micronautで簡単なHTTPサーバーを実装してみる

記事を書いたばかりですが、Micronautに触った続きとして、もう少し実際の実装部分を掘り下げたところを書いてみます。 前回の記事は以下です。Micronautの導入やIntelliJ IDEAでの開発方法、Micronautによるサーバーの実行方法はこちらを参考にしてください…

Micronaut に入門してみよう

結構前から気になりつつ、触ることができていなかった Micronaut に今回入門することができました。 micronaut.io どんなものかは実際のページを見てもらうと早いと思いますが、以下にざっくりとした紹介を書いてみます。 マイクロサービスを見据えたJVM上の…

Kotlinプログラミングを読んだ

Kotlinプログラミング作者: ジョシュスキーン,デビッドグリーンハフ,Josh Skeen,David Greenhalgh,吉川邦夫出版社/メーカー: 翔泳社発売日: 2019/02/14メディア: 単行本この商品を含むブログを見る 2019/2/14 に発売された Kotlin 初心者向けの書籍。 Kotlin…

ActiveModel::Model で DBに依存しないモデルを作ろう

もう使い古されたネタという感じですが、Railsを使わずとも ActiveSupport だけを利用してRubyのコードを書くことは結構多いのではないでしょうか。 blank? , present? であったり、 pluralize や try 、 1.year.ago のような呼び出しなど、ヘルパーメソッド…

Kotlin向けDIフレームワーク Koin を使ってみよう

Kotlin は最近は Android で正式採用され、開発に採用される方も増えてきたのではないかと思います(とはいっても Google I/O 2017 なのでもう一昨年の話ですが)。 Androidに限らず、テストを書いたりしながら開発をしていると、DIのような依存性を柔軟に解…