[非推奨]Javaの基礎を学び終えたアナタに贈る, SpringBoot/SpringSecurityによる掲示板開発ハンズオン
オフィス狛 技術部のmmm(むー)です。 以前、Angularのプロジェクトでフォームの画面を作成しました。 そのフォームのinput項目に当然バリデーションを設定していたのですが、条件によってバリデーションを設定したり、無効にする必要がありました。 今回はその時のコードを備忘録も兼ねて紹介いたします。 対応方法 画面は下記のようなフォームが存在するとします。 名前:___________ メモ:___________ コードは下記となります。 // バリデーション validations = { 'name': [Validators.required], 'memo': [Validators.maxLength(20)], }; ngOnInit() { // 初期値(空文字 '')とバリデーションを設定 this.exampleFormGroup = this.formBuilde
はじめに ユーザー管理でお世話になっているdeviseで思わぬエラーにハマり、かなりの時間を溶かしたので備忘録として残しておきます。 環境/Gem(ver) Ruby (2.5.1) Rails (5.2.4.3) 結論 自分でUserモデルにvalidatesをかける時は気をつけよう。 ちゃんと下調べをして今後実装するようにします。。 前提 devise を bundle install 後、以下のように Userモデルにバリデーションをかけていました。 passwordには7文字以上の制限をかけたいと考えていました。 これで、新規ユーザーの登録は問題なくできていました。 ※UserとShopは多対多の関係で中間テーブルにStylistテーブルがあるイメージで実装しています。 (models/user.rb) class User < ApplicationRecord # Includ
システムの状態の伝達手段:インジケーター、バリデーション、通知 インジケーター インジケーターは、(コンテンツであれ、ユーザーインタフェースの一部であれ)ページ要素を目立たせて、注意を要する特別な何かがあることをユーザーに知らせる方法である。多くの場合、インジケーターはその要素が表わすアイテムに何らかの変更があったことを示す。 後述するように、インジケーターはバリデーションエラーや通知を知らせるために頻繁に用いられるが、単独での利用も可能である。インジケーターとは、動的な性質を持つ特定のコンテンツやUI要素にユーザーの注意を引くことを目的とした視覚的な手がかりである(見た目がいつも同じであれば、どんなに派手にデザインされていても、それはインジケーターではない)。 インジケーターを実装する方法は少なくとも3つある: 常にではないが、多くの場合、インジケーターはアイコンとして実装される。容易に
これは何? Remix でアプリケーションを開発する際、route でのパラメータやクエリのバリデーションは必須です。通常、このバリデーションは手動で行う必要がありますが、zod と zodix というモジュールを使うことでとてもシンプルに書くことができます。 たとえば、URL パラメータのバリデーションと値の取り出しでは以下のように定型句が多く煩雑になりがちですが、zodix はそこで威力を発揮します。 例: https://remix-app/query?count=100&page=1 のバリデーションを行う方法 zodix がない場合 export async function loader({ request }: LoaderFunctionArgs) { const { searchParams } = new URL(request.url); const count =
この記事では、ZodとuseFormStateを使った Next.js / React Server Actions におけるバリデーションを行う方法について紹介します。 Next.js の公式チュートリアルを進めるなかで、このあたりのコードが少しわかりにくいため、自身で調べた内容の備忘録を兼ねて記事として公開することにしました。 サンプル Next.js 公式が提供してくれているサンプルアプリを元に説明をします。 この記事では以下の請求書登録画面とそのコードを元に説明を行います。 React Server Actions とは クライアントのイベントをトリガーとしてサーバーサイドの関数を呼び出す機能です。 例えば以下のように、formのaction属性にサーバーサイドで扱う関数を渡すことができます。 // Server Component export default function
<form action="" method="POST"> <table> <tbody> <!-- お名前 --> <tr> <th></th> <td><div class="err-msg-name"></div></td> </tr> <tr> <th><label for="name">お名前</label></th> <td><input type="text" name="name" id="name" placeholder="ジャバ スクリプ子"></td> </tr> <!-- パスワード --> <tr> <th></th> <td class="err-msg-pass"></td> </tr> <tr> <th><label for="password">パスワード</label></th> <td><input type="password" name="pa
はじめに deviseでユーザーの登録内容を編集する方法 deviseでのパスワードの取り扱いは、セキュリティーの観点から編集(update)ができない仕様になっていて、しようとしても編集できず強制ログアウトされてしまう。 また、viewを編集して、入力できない様にしていてもバリデーションが発動してしまう。 なので、編集(update)のさいはそのバリデーションをoffにしなければならない。 目次 1.devise導入と各種ファイル作成・設定 2.バリデーションの解除 3.バリデーションのカスタマイズ 4.veiwページの編集 開発環境 ruby 2.6.5 rails 6.0.0 devise 4.7.3 実装 1.devise導入と各種ファイル作成・設定 deviseのインストール rails g devise:view モデル名 ルーティングの設定 これで下準備が整いました。 2.バ
// Require `PhoneNumberFormat`. const PNF = require('google-libphonenumber').PhoneNumberFormat; // Get an instance of `PhoneNumberUtil`. const phoneUtil = require('google-libphonenumber').PhoneNumberUtil.getInstance(); // Parse number with country code and keep raw input. const number = phoneUtil.parseAndKeepRawInput('202-456-1414', 'US'); // Format number in the E164 format. console.log(phoneUtil
前回、Bootstrap4のフォームのルールがややこしくて、自分の備忘録としてコピペ用のソースをエントリーしました。 Bootstrap4 スターターテンプレート(フォーム用) ただ、フォームを作る以上、検証作業(バリデーション)のデザインも必要になります。 Bootstrap4ではバリデーションのクラスも用意されています。 また require 程度のチェックであれば、HTMLのバリデーション機能を利用することが可能です。 今回はBootstrap4でのHTMLバリデーションについてエントリーします。 完成形 HTML5ではフォーム機能が大幅に拡張されていて、標準機能(required 程度の簡単なチェック)だけならリアルタイム入力のバリデーションを実装できます。 Bootstrap4(HTMLバリデーション) デモ ソースコード <!DOCTYPE html> <html lang="
Route::resource('sample', 'SampleController'); というルーティングが前提。 バリデーションのuniqueで指定したIDを除外したい場合Rule クラスのignore メソッドにIDを指定する。コントローラーにバリデーションを記述するのであれば // app/Http/Controllers/SampleController.php public function update(Request $request, $id) { $this->validate($request, [ 'name' => 'required|max:255', 'email' => [ 'required', 'max:255', 'email', Rule::unique('samples')->ignore($id), ], ]); // update処理 }
See the Pen vue.js(bootstrap-vue) File Upload by Tenderfeel (@Tenderfeel) on CodePen. なんでか初回はonchangeが反応しない挙動があった。 プレビュー表示ならwatchでv-model監視する手もあるな🤔と思った。 draganddropの判別にmodernizr使おうとしたら存在しなかったんだけど消えたんですかね。 ないものは仕方ないからisMobileでPCだけドラッグドロップUIになるようにしてます。 Fileが色々と情報をくれるのを利用して違反がないかチェックする。 error変数にエラーメッセージを入れるとします。 error: [] 画像ファイル容量 if (val.size / 1000 > 200) { this.error.push(`ファイルサイズが大きすぎます(${Math.r
はじめに 皆さんは、AWS Lambdaの開発言語は何を使っていますか? 選択肢はいろいろあるかと思いますが、私はPythonで開発しています。 Lambdaの中で送られてきた値のチェック(バリデーション)をすることも多いかと思いますが、そのロジック自前で実装していませんか? ライブラリを使うと自前で実装せずに実装できるので紹介します。 実装例 ソースコード とにもかくにも、コードを見てもらったほうが早いと思います。 from aws_lambda_powertools.utilities.validation import validate from aws_lambda_powertools.utilities.validation.exceptions import SchemaValidationError BODY_SCHEMA = { "$schema": "http://js
WordPressのお問い合わせフォームに「MW WP Form」というプラグインを使っていますが、ここ最近は迷惑な宣伝投稿が増えてきました。 人間が投稿しているのであれば我慢も出来ますが、おそらく誰かがWordPressフォームのURLを収集、リスト化してボットが定期的に自動投稿しているものと考えられます。 パケットの無駄なので、これらの社名・サービス名・ドメイン名をNGワードにして二度と投稿出来ない設定を簡単に追加したのでシェアします(他のプラグインに頼らずに実装) 以下のコードをfunctions.phpに追加する <?php //--------------------------------------------- // + 問い合わせフォームのSPAM排除 //--------------------------------------------- function mwf
こんにちは、CX事業本部 IoT事業部の若槻です。 今回は、AWS CloudFormationおよびAWS SAMのテンプレートのJSON Schemaによるリアルタイムバリデーションを試してみました。 前提 Visual Studio Codeでテンプレートの編集を行う前提とします。 JSON Schemaとは JSON Schemaとは、JSON(YAML)ドキュメントのアノテーションやバリデーションの規格を行うオープンソースプロジェクトです。 JSON Schema | The home of JSON Schema JSON Schema is a vocabulary that allows you to annotate and validate JSON documents. JSON Schemaでは様々な様々なドキュメントの規格に対応しており、対応ドキュメントの一覧は下
前回では、Spring Bootを使ったWebアプリケーションで入力されたデータをバリデーション(入力チェック)する方法を解説しました。 前回のバリデーションは項目単位のバリデーションで、単項目チェックや単項目バリデーションと呼ばれるものでした。しかし、実際にアプリケーションでは、複数の項目にまたがったチェックロジックを必要とすることが多くあります。 今回は、入力された複数のデータにまたがってチェックをする、相関チェックや相関バリデーションと呼ばれるものの実装方法を解説します。 相関バリデーションとは 画面から入力された複数のデータにまたがって、データの正当性を検証することを相関チェックや相関バリデーションと呼びます。 例えば、郵便番号の主番号は3桁であること、子番号は4桁であること。これは、各項目ごとにバリデーションすればよいので、前回に解説した単項目チェックで検証できます。 しかし、郵
HaskellでCLIツールを作っているときに, 本記事のタイトルにあるようなことを疑問に思いました. 例えばサイコロを表すデータ型を次のように定義したとしましょう(diceの単数形はdieであることに注意). ここではDieモジュールの中でDie型を定義しています. module Die where data Die = Die Int しかしこれだと, 以下のような値も構築することができてしまいますね. die_0 = Die 7 die_1 = Die 0 die_2 = Die (-2) これではサイコロの目が1から6までであるという前提でコードを書くことができなくなってしまいます. 外部からこのモジュールを利用したい場合なんかは特に困りますね. こんな状況で使えるのが, 「smart constructor」というパターンです. smart constructor 早速コードの全
はじめに Goのバリデーション用パッケージのvalidator.v9を使って、条件付き必須のバリデーションを実装したかったのですが、これまでrequired, min, maxくらいしか使っていなかったので、勉強しなおしました。 ちなみにvalidator.v10でも同じ模様です。 公式ドキュメントに丁寧に書いてあるのですが、日本語でまとめられているものが無さそうなので書いておきます。 validator.v9の使い方 この記事を読んでいる人であればおそらく説明の必要もないと思いますが、一応。 公式サンプルをチョットいじっています。 package main import ( "fmt" "github.com/go-playground/validator/v9" ) type User struct { Name string `validate:"required"` Age uin
どうもfujiharaです。今回はMovable Type .netフォームにバリデーション付きの確認用メールアドレスフィールドを追加する方法をご紹介いたします。 背景 弊社でもサイト構築時によく利用させてもらっているMovableType.netですが サイトにフォーム機能をもたせる時はMovableType.net フォーム機能を使用します。 フォームを作成してサイトで使用するにはフォーム用のドメインに飛ぶか iframeで埋め込んでサイトに表示するのですが フィールドにバリデーションを設定する時にはカスタムバリデーションをつかった方法で実装します。 カスタムバリデーション 確認用メールアドレスの追加 確認用メールアドレスフィールドを設けるかの是非は一旦置いておいて、追加したいとなった時にデフォルトの機能では どこかのフィールドと比較するといったような機能が無いのでカスタムバリデーショ
こんにちは @color_box です。 仕事からアイディアを得てgemを作ったのでそれについて書きます。 rspec-all_records_validator github.com rspec-all_records_validator というgemを作りました。DB内の全レコードに対してvalidationを実行するgemです。 これを導入するとある種のバグをE2Eテストで検出可能になります。RailsとRSpecが入っているプロジェクトを前提としています。 作った背景 仕事で遭遇したとあるバグが、このgemを作成した背景にあります。 Active Recordのバリデーションにおいて、関連の個数を確認するようなバリデーションはすり抜けの可能性があります。 例として下記のようなクラスを仮定します。Humanオブジェクトはdogを一つ以上関連として持つべき、というバリデーションが設定さ
メールアドレスの形式をバリデーションする方法 PHPでメールアドレスをバリデーションする方法は、以下の2つです。 正規表現を使ってチェックする方法 filter_var関数を使ってチェックする方法 実際に書いてみよう 正規表現を使ってメールアドレスをバリデーションする方法 まずは、正規表現を使ったバリデーションの方法について見ていきましょう。 <?php // バリデーションに使うメールアドレス $email = 'hogehoge@email.com'; // バリデーションに使う正規表現 $pattern = "/^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9-]+(?:.[a-zA-Z0-9-]+)*$/"; if ( preg_match($pattern, $email ) ) { echo "正しい形式のメールアドレスです。"; } e
2020/12/04 (更新日: 2021/01/12) MW WP Formのバリデーション設定 【ハマりやすいポイントも解説】 WordPress 本記事では、MW WP Formのバリデーション設定の詳細を解説します。 MW WP FormはWordPressのお問い合わせフォームを簡単に作成できるプラグインで、確認画面や完了画面を個別のページとして作成できたり、バリデーションを細かくできたりと高機能なのが特徴です。 この記事を読むことによって、MW WP Formの基本的なバリデーション設定方法が分かるようになります。 MW WP Formの基本設定を知りたい方は「【簡単】MW WP Formの使い方・設定方法 【確認画面や自動返信メールあり】」を参考にしてください。 MW WP Form バリデーションのカスタマイズ設定 ここではMW WP Formでよく使うバリデーション(必須
<?php declare(strict_types=1); namespace App\Controller; class SamplesController extends AppController { public function index() { } } <?= $this->Form->create(null, ['type' => 'file']) ?> <!-- エラーメッセージ --> <?php if ($this->Form->isFieldError('upfile')) : ?> <?= $this->Form->error('upfile') ?> <?php endif; ?> <!-- ファイル選択フォーム --> <?= $this->Form->file('upfile') ?> <!-- 送信ボタン --> <?= $this->Form->sub
#はじめに 今回はカスタムバリデーションについて、まとめれればと思います。 カスタムバリデーター モデルとは別で、自分でバリデータやバリデーションメソッドを作成することができます。app/配下にvalidatorsディレクトリ(app/validators)を作成することで、自動で読み込んでくれます。 validator ActiveModel::Validatorを継承するクラス。このクラスでは、validateメソッドを実装する必要があります。 クラス名に規定はなく、validateメソッドを実装する必要があり、 引数としてrecordを受け取ることができます。 このrecordというのは、バリデーション対象のモデルのインスタンスが入ります。 class UserValidator < ActiveModel::Validator def validate(record) if rec
はじめに yupとvee-validateを用いれば簡単にフォームのバリデーションを行うことができます。 ただvee-validateは非常に便利なバリデーションライブラリなのですが、compositionAPIを用いている場合の情報があまりなかったので記事にしてみました。 yupとは yupはJavaScriptでフォームのバリデーションルールを宣言的に記述することのできるライブラリです。 vee-validateとは vee-validateは「素早い」「柔軟」「実装が容易」といった多くの特徴を持つVue.jsのバリデーションライブラリです。 検証環境 vue 3.0.0 TypeScript 4.1.5 vee-validate 4.5.6 yup 0.32.11 プロジェクトの作成 vue-cliを用いてプロジェクトを作成します。 vue-cliのバージョンが4.5以上でないとvu
カスタムバリデーションクラス作成 src/ModelにValidationフォルダを作成し、その中にCustomValidation.phpを作ります。 <?php namespace App\Model\Validation; use Cake\Validation\Validation; class CustomValidation extends Validation { public static function imageSize($check, $width, $height) { $size = getimagesize($check['tmp_name']); return ($size[0] == $width) && ($size[1] == $height); } } public function validationDefault(Validator $vali
Zod はバリデーションライブラリで入力フォームを通してユーザが入力する値が適切な値かどうかチェックするためのバリデーターとして利用することができます。入力フォームだけではなくバックエンドや localStorage から取得したデータが適切な値なのかチェックするために利用することもできます。つまり何かしら外部から取得したデータをアプリケーション内に取り込む際のバリデーションとして利用することができます。さらに Zod はバリデーションだけではなく TypeScript の型定義を利用する際に利用することもできます。 本文書では React を利用したフォームバリデーションとして Zod をどのように利用することができるのかを確認した後に TypeScript での型の作成方法について説明して Next.js を利用してバックエンドから取得したデータのチェックに Zod を利用して動作確認
DRFでバリデーションをするには? シリアライザを使うことで、Django入力フォームと同じように入力情報のバリデーションをおこなうことができます。 ①検証対象の入力データを引数dataに渡します。 ②シリアライザをインスタンス化します。 ③「is_valid()」を実行することで入力データのバリデーションをおこなうことができます。 バリデーションの対象フィールド バリデーションの対象となるのは次のフィールドです。 バリデーションのOKとNG バリデーションOK is_valid() の戻り値がTrue(すなわちバリデーション OK)の場合、 シリアライザオブジェクトの 「validated_data」 という属性にアクセスすることで、 バリデーション済みの値が保持された「OrderedDict型」のオブジェクトを取得することができます。 from api.serializers impo
分子設計・材料設計・プロセス設計・プロセス管理において、分子記述子・実験条件・合成条件・製造条件・評価条件・プロセス条件・プロセス変数などの特徴量 x と分子・材料の物性・活性・特性や製品の品質などの目的変数 y との間で数理モデル y = f(x) を構築し、構築したモデルに x の値を入力して y の値を予測したり、y が目標値となる x の値を設計したりします。 モデルの予測性能を評価するために、データセットをトレーニングデータとデストデータに分割して、トレーニングデータで構築したモデルを用いてテストデータを予測します。ただこの方法では、データセットのサンプルが少ないとき、テストデータのサンプルはさらに少なくなり、モデルの予測性能を適切に評価できません。そのため、すべてのサンプルをテストデータにすることが可能なダブルクロスバリデーションを用いることになります。
vee-vallidateとは Vue.jsでリアルタイムバリデーションを行うためのライブラリです。 入力時に不正な値があった場合、サーバーへ送信する前にエラーを表示させることができます。 実装内容 ユーザー登録時のパスワード入力のバリデーションエラーを表示する。 仕様 パスワードには大文字・小文字・数字がそれぞれ1文字以上含まれていること。含まれていなかったものがあれば、バリデーションエラーを返す パスワードは8文字以上16文字以内で入力されていること。8文字未満もしくは16文字を超えた場合はバリデーションエラーを返す コードの例 説明の関係上で一部省略しておりますので、ご了承ください🙏 ユーザー登録フォーム(必須項目のみ抜粋) <template> <validation-observer ref="observer" v-slot="{ invalid }"> <validatio
Abstract Kubernetes (K8s) のマニフェストのバリデーションを行う手法を解説する。 効率的な開発・リリースを行うため、K8sを採用する場合は通常CI/CDパイプラインの採用も行う。 すなわち、コードの変更に応じて自動的にビルド・テスト・デプロイまで行われる前提となる。 CI中でアプリケーションのビルド・テストが行われることはもちろん必要だが、同様にK8sマニフェストのテストやセキュリティチェックが行われることが望ましい。 また、CD中で組織のポリシーに沿わないK8sマニフェストがデプロイされることも防ぐ必要がある。 本解説ではOPA, Conftest, Konstraint, Gatekeeper, Gatorという技術スタックを用いて上記を自動的に実現する仕組みを、簡単なコードと共に解説する。 Introduction Background Abstractで記述
はじめに 前回の記事ではHonoにPrismaを導入してCloudflare D1と接続して簡単なAPIを作成しました。 今回はこれに続きZod OpenAPIを利用して、リクエストのバリデーション処理を実装し、それをそのままOpenAPIスキーマとして生成、Swagger UIで表示させるところまでやってみます。 環境 Hono v4.3.4 Zod OpenAPI v0.11.0 Zod OpenAPIのインストール まずはパッケージのインストールから始めます。 pnpm add zod @hono/zod-openapi Zodスキーマ 次にZodスキーマを書いて、リクエスト値やレスポンス値を定義します。 schema.tsというファイルを作成しました。 import { z } from "@hono/zod-openapi"; export const ErrorSchema =
1. 結論だけ知りたい! 以下の参考サイトのメールバリデーションを行えば、ほぼ問題ありません。 完全なバリデーションは難しいという私の結論です。 https://qiita.com/sakuro/items/1eaa307609ceaaf51123 2. メールバリデーションってなに?メールアドレスが使用できるのか?の妥当性を確認することです。 使用できるのか?とは RFCに準拠しているか?になります。 3. RFCってなに?メールアドレスに関するRFCは以下になります。 抜粋ですが、以下のセクションが参考になります。 読み解くのは大変ですが、完全なバリデーションは難しいです。 3.4.1. addr-spec 仕様 http://srgia.com/docs/rfc5322j.html#p3.4 addr-spec は具体的なインターネット識別子であり、ローカルで解釈される文字列の後にア
オフィス狛 技術部のKoma(Twitterアカウントの中の人&CEO)です。 今回は、独自エラーチェック(カスタムバリデーション)を作成します。 プログラムは、以前の記事で使用した「アカウント登録機能」を使用したいと思いますので、下記の記事も参照ください。 参照1:【Angular】コンポーネントの設計(画面ごとの設計)について。 参照2:【Angular】エラーメッセージの管理について考える。 (1)登録画面の実装を確認 まずは、現在の登録画面のコンポーネントを見てみます。 コード量が多いので、全体はこちら(register.component.ts)で確認ください 今回カスタムバリデーションを追加するのは、こちらの携帯番号(mobilePhoneNumber)部分です。 mobilePhoneNumberMaxLength = 11; nameMaxLength = 20; // (
date_parse を通すため 例01〜例03のような論理指定は弾かれますが、例04のような記述では前半部分が年月日の配列値を返すためバリデーションは通ります。 また、アメリカ式の月日年(例09)が通って、ヨーロッパ式の日月年(例11)は弾かれます(これは環境のタイムゾーンに影響されるでしょう)。 いずれにせよ、バリデーションに通ってもそのままデータベースに保存できるとは限りません。 データベース保存を前提にするなら、ISO-8601 の "YYYY-MM-DD" 書式に限定したほうが何かと都合が良いですね。 date_format による ISO-8601限定 入力され日付のフォーマットを限定するために date_format が用意されています。引数は date_parse_from_format を通して処理されます。 date と date_format は両方を同時に使用するこ
入力フォームのvalue属性はold関数を使っています。 加工した入力値をバリデーション prepareForValidation()メソッドを使って、データを加工してからバリデーションを行います。 例えば下記のようなことができます。 全角英数を半角英数にしてから英数のバリデーションを試みる 年月日のプルダウンを連結させて日付が正しいかどうかをバリデートする 変換後のデータを「パラメータ名 => 変換後の値」という形の連想配列で用意します。 mergeメソッドの引数に用意したデータを入れて実行すればバリデーション用のデータを加工できます。 バリデーション 8.x Laravel prepareForValidation()の実験 意味のない例ですが、実験としてリクエストオブジェクトを書き換えて最大文字数を超えるデータを作ってみます。 タイトルを61文字に書き換えてバリデートしています。 タ
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く