Skip to content

Recent Posts

Members Public

ginでカスタムValidatorを作成する方法を解説【Go】

Go言語のWebフレームワークであるginでは、HTTPリクエストのパラメータを受け取るための構造体にタグとしてValidatorを記述することが可能です。このValidatorは、リクエストパラメータの値が特定の条件を満たすことを検査することができます。 例えば、あるフィールドが必須であったり、ある桁数である必要があったり、特定の形式に一致しなければならないなど、様々な条件を指定することができます。これにより、リクエストパラメータが正しくない場合にはエラーを返すなど、APIの堅牢性を高めることができます。 ginは、標準で多数のValidatorを提供していますが、それらだけでは要件を満たせない場合もあります。そのような場合には、自分で独自のカスタムValidatorを作成し、それを適用することができます。これにより、より複雑な条件を満たすようなリクエストパラメータの検証を行うことができます。 この記事では、そのような独自のカスタムValidatorの作成方法と、それをginの構造体に適用する方法について解説します。 ginのValidator機能について gi

Members Public

Shift vs. CapsLock | Rust 解法・解説 | ABC303 D (AtCoder)

Shift vs. CapsLock Rust - 問題リンク この記事では、AtCoderの「Shift vs. CapsLock」という問題の解説を行います。問題文と制約は問題リンクから確認して下さい。 コード例はRustで示しますが、別言語を使用している方でも理解できると思います。 Shift vs. CapsLock — 考察 問題文を見た途端、これはDPで解けるなと思いました。3種類の操作をどのようにとると最短で文字列$S$を作れるかという最適化問題のようです。ナップサック問題と同じようなタイプの問題ですね。 "0回以上何度でも"操作を行えるというところについて考えてみます。各操作を1つの遷移とすると、文字を追加せずに状態だけ変える操作があるので少し混乱してしまいます。 そこで、「$S$の$i$文字目を得るのに必要な操作(操作列)」を1つの遷移だとみなして、$|S|$まで状態遷移させると良いです。 説明のため、各操作をそれぞれ$x,y,z$とおくことにします。それぞれ、操作$x$は$

Members Public

拡張子がないファイルを見つけて削除するスクリプトを作成する

拡張子なしのファイルを削除したい C, C++, Rustなどのちょっとしたコードを書いて実行するという場合、コンパイル時に(何も指定しなければ)拡張子なしの実行ファイルが生成されます。僕の場合は、競技プログラミングの問題を解く場合や、ちょっとしたお遊びコードを書く場合とかに気づいたら作業ディレクトリが実行ファイルで溢れていたりします。 今回はそのような拡張子のないファイルを見つけてガッと削除するコマンドを作成しよう、という記事です。 なお、この記事では拡張子のないファイルというのは、ファイル名が<filename>.<ext>という形式になっていないファイルを指すことにします。 拡張子がないファイルを正規表現で判定 まずは拡張子のないファイルを発見するコマンドを確認します。今回はgrepを使用することにします。grepで拡張子が指定されていないファイルを見つけるには以下のコマンドが使用できます。 $ grep -v -E '^.+\..+$' -vオプションはマッチしないものを返す際に使用するオプションで、-E <regexp> はマッチに使用する正規表