Webアプリケーション 二重送信防止

何も考えていないとどうなるか

おもいっきり素早くクリックすると何レコードも登録されてしまうのである。

OK.サーバー側にチェック入れるわ

例えばショッピングサイトだとする。
前回注文から一定時間経過してないとエラーになるようにしたらどうか。

流れ:

  • 注文ボタンを押す
  • JS(on click)

    • ユーザーIDで注文テーブルを読み、前回注文から一定時間経過しているかチェック

      • 経過してない→エラー
      • 経過している→注文

これでどうだ。
試してみるとダメ。

素早くクリックするとDB側の更新間に合わないの?わからない。

なわけで一応フロント側にも制御をいれる

     $("#test").prop("disabled", true);

これでいってみましょう。

Ubuntu 18.04 に Ruby 環境構築 rbenv インストール

rbenv インストール

AS400の世界から脱出した私は仕事に必要な事を勉強してきました。

だけど、そろそろ興味ある事を勉強したい。そんなわけでまたRubyをやりたいので環境構築します。

前提

rbenv リポジトリ

https://github.com/rbenv/rbenv

rbenv ダウンロードから設定まで

1.clone

 git clone https://github.com/rbenv/rbenv.git ~/.rbenv

2.path

Ubuntu なので

echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bashrc

3.init

~/.rbenv/bin/rbenv init

オートマティックにやるには以下をアペンドしてねってメッセージが出るの以下を.bash_profile に追加。

eval "$(rbenv init -)"

4.shell の再起動

5.正しくセットアップされているか確認

確認用スクリプトが紹介されているのでやる。

curl -fsSL https://github.com/rbenv/rbenv-installer/raw/master/bin/rbenv-doctor | bash

結果、なんか駄目っぽいぞ。

Checking for `rbenv' in PATH: /home/mhaya/.rbenv/bin/rbenv
Checking for rbenv shims in PATH: not found
  The directory `/home/mhaya/.rbenv/shims' must be present in PATH for rbenv to work.
  Please run `rbenv init' and follow the instructions.

Checking `rbenv install' support: not found
Unless to plan to add Ruby versions manually, you should install ruby-build.
Please refer to https://github.com/rbenv/ruby-build#installation

Counting installed Ruby versions: none
  There aren't any Ruby versions installed under `/home/mhaya/.rbenv/versions'.
  You can install Ruby versions like so: rbenv install 2.2.4
Checking RubyGems settings: OK
Auditing installed plugins: OK

3で設定したのを.bash_profilejじゃなく.bashrcに追加してみたら。

Checking for `rbenv' in PATH: /home/mhaya/.rbenv/bin/rbenv
Checking for rbenv shims in PATH: OK
Checking `rbenv install' support: not found
Unless to plan to add Ruby versions manually, you should install ruby-build.
Please refer to https://github.com/rbenv/ruby-build#installation

Counting installed Ruby versions: none
  There aren't any Ruby versions installed under `/home/mhaya/.rbenv/versions'.
  You can install Ruby versions like so: rbenv install 2.2.4
Checking RubyGems settings: OK
Auditing installed plugins: OK

OKかな。

6.ruby-build インストール

github.com

こちらを参照に以下を実行。

$ git clone https://github.com/rbenv/ruby-build.git ~/.rbenv/plugins/ruby-build

この状態で再確認すると。

Checking for `rbenv' in PATH: /home/mhaya/.rbenv/bin/rbenv
Checking for rbenv shims in PATH: OK
Checking `rbenv install' support: /home/mhaya/.rbenv/plugins/ruby-build/bin/rbenv-install (ruby-build 20180822-6-g44f0f53)
Counting installed Ruby versions: none
  There aren't any Ruby versions installed under `/home/mhaya/.rbenv/versions'.
  You can install Ruby versions like so: rbenv install 2.2.4
Checking RubyGems settings: OK
Auditing installed plugins: OK

OK牧場

詳細手順はこちらです。
https://github.com/rbenv/rbenv#basic-github-checkout

依存関係インストール

ruby-build のドキュメントから

ruby-buildは、必要なRubyのバージョンをダウンロードしてコンパイルするために最善を尽くしますが、
システムの依存関係が満たされていないためにコンパイルが失敗したり、
コンパイルに失敗します。以下は、正常なビルド環境のための推奨事項です

Ubuntuなのでこちら。

apt-get install autoconf bison build-essential libssl-dev libyaml-dev libreadline6-dev zlib1g-dev libncurses5-dev libffi-dev libgdbm5 libgdbm-dev

sudo で。

rbenv を使う

これで使えるはずだ。やってみよう。

rbenv install 2.5.1

インストールされているRubyインタプリタ一覧出力

rbenv versions

現在の環境でのバージョン確認

rbenv version

詳しくはまた。

ちなみに私はWEB+DB PRESS vol.98 を参考にしました。 こちらにかなり丁寧に載っています。
少し読み替えが必要な部分もありますが参考になると思います。

Linux オンラインマニュアルのセクション man, whatis, help

セクション番号

  • 1:一般ユーザーコマンド
  • 5:ファイルの書式
  • 8:システム管理コマンド

psswdファイルのマニュアルを表示するコマンド

man 5 passwd

どのようなセクションがあるか調べる

$ whatis passwd
passwd (1)           - ユーザパスワードを変更する
passwd (5)           - パスワードファイル
passwd (1ssl)        - compute password hashes

whatis :マニュアルの最初の行だけ表示

help

コマンドによってはhelpオプションがある。