エンジニアのひよこ_level10

毎日更新してた人。たまに記事書きます。

【IE】Formタグのsubmitで二重送信されてエラーが出る【294日目】

こんなときがありました

<form>
    <input></input>

    <button onClick="submit();"></button>
</form>

こんな感じの構成で、submitが想定通りに動かなかった。

私のときは、Laravelのバリデーションのエラーで、サーバーサイドを疑いそうになった。
ブラウザの問題なのに。

IEは二重送信をそのまま送る

  1. buttonタグのonClick()でsubmit(他ブラウザはこれで終わる)
  2. buttonタグのデフォルト機能で、クリック時にsubmitするのが動作(IEはこれも動く)

これが原因でエラーが出ていました。

解消方法

JS側でsubmitしている行、例えば

(this).parents('form').submit();

の記述のあとに、

return false;

をする。

なんで?

return false によって、このあと発火されるデフォルトのbuttonの機能を止めることが出来る。

これは、aタグでも起こることなので、JSのあとにHTMLのデフォルトの機能を動かしたくないときに有効。

【Laravel】バリデーションでエラーが出た時に、ページにエラーを出したい【293日目】

こんな時

Laravelのバリデーションを作る。

その時のエラーに応じて処理をしたい

Request側

省略。

Controller側

    public function index(XxxRequest $request)
    {
        xxxxxx
    }

該当のバリデーションをかけたリクエストを用意する。

View側

    @if (count($errors) > 0)
            @foreach ($errors->all() as $error)
                <p>{{ $error }}</p>
            @endforeach
    @endif

バリデーションエラーが出た場合、$errorsという変数は自動的に作ってくれるので、コントローラー側は気にせず書くといいです。

ここの$errorsのところで、いい感じに書いてください。

参考

中級者向けタスクリスト 5.1 Laravel

【振り返り】7月振り返り。成長と実験の両方ができた月。【292日目】

1.今月の感想(ざっくり)

新しいことを始めた月でした

2.良かったこと

  1. レトロスペクティブに新しい挑戦
  2. ブログで振り返りを始める
  3. 自分の性質『仕組み作り』が軸であることを知る

3.もっとこうしたかったこと

プログラミングの方は、あまり進んでなかった。
スクラムとかの方に力集中してたから仕方ないかな?

4.新しく気づいたこと

自分の軸は、『仕組み』を作ること。

極端な話、自分がいなくても、その仕組みが機能して、みんなの役に立てればよい。

自分本位な偽善的なところも強い。
性質としては『自分がいいと思うものが広がればいい。そしてそれによって誰かが幸せになると良い』

ゲームの回復役が好きな理由は、明確に役立っていることがわかるから。そこに私への感謝は存在しなくてもいい。

5.来月したいこと

プログラミングを少し頑張るよ!

最近ポジティブ活動・発言が少し増えてきたから、維持するよ!

6.その他

新しいことを学んでるのは良いこと!

成長と実験の両方ができた月でした。

【Laravel】URLが『/hoge』のように、.phpが要らない理由【291日目】

普通のページなら

phpの普通のページだと、URLは

https://domain.jp/hoge/huga.php

のように、phpをつける必要がありました。

では、なぜLaravelはそれが必要ないのでしょう。

必ずindex.phpを開いてるから

これはURLがなにであろうと、ドキュメントルートのindex.phpを開いているからです。

https://domain.jp/hoge/huga

と書いていても、開くのは、ドキュメントルートのindex.phpです。

そして、そのindex.phpが、route.phpを読み込んで、目的のページを表示させています。

では、どうやって必ずindex.phpを読み込ませているのか

.htaccessに秘密が

    RewriteEngine On

    ## Redirect Trailing Slashes If Not A Folder...
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.*)/$ /$1 [L,R=301]

    ## Handle Front Controller...
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^ index.php [L]

URLの最後がスラッシュなら、残りを第一引数に渡したり、
強制的にindex.phpを呼び出したり。

あーここでいろいろしてたんですね。

nginxの場合

ちなみに、nginx+php-fpmとかで構築してるときには、nginxの方でも設定されてることもあります。

詳しくはこちらへ

willow710kut.hatenablog.com

【振り返り】レトロスペクティブを新しくしてみた結果と感想【290日目】

レトロスペクティブを新しくしてみました

ということで、今日はレトロスペクティブを新しくしてみました。

といっても、大きく変えたわけではなくて、
少しだけ変えてみることを実行してみました。

ただ、今までやり方が変わっていなかったところから、
変化を許容するレトロスペクティブになれるための、
第一歩として頑張りました!

やったこと

  • 振り返りのアクティビティを2グループに分ける
  • ドット投票時、重要度順に貼る数を変える
  • レトロスペクティブの振り返りを実施

狙い

振り返りのアクティビティを2グループに分ける

今まで8人でやっていたので、 1. 間延びする 2. 時間がかかる という2点を解消したかった。まあそもそも、一度に5人くらいまでしかまとめられないって言われるくらいらしいです。

ドット投票時、重要度順に貼る数を変える

1票だと『興味がある人多いけど重要じゃない』ものに票が集まるので、重要度に重みをつけたかった。
ただ、最終的に決定するときに、この票を絶対にせずに、あくまで参考値として扱うようにしました。

レトロスペクティブの振り返りを実施

今までレトロスペクティブのカイゼンをやる余地がなかったので、
振り返りを行って、カイゼンを行える仕組みを作る。

結果

思ったより好評でした。

2グループ

2グループに分けるのは混乱を生むかと思いましたが、メンバーの協力により、問題なく進みました。
話しかけるメンバーが少ないため、心なしか全員の発言回数が増えていたように思います。

ドット投票

最初は6,3,1という重み付けでしたが、貼るの面倒ということが、あとの振り返りでTRYに上がりました\(^o^)/
4,2,1にしようかと検討中。あるいは、『正』の字書くかな?

レトロスペクティブの振り返り

フィードバックいただけたのは大きい。 『実は今までマンネリ化してた』という声もありました。

おかしがほしいを全員の合意にしたのは大きいので、今度みんなでお菓子を買う仕組みを作ります(・∀・)w
議論の方向性にも言及されたのは、なかなかいいフィードバックでした。

変化が出来るレトロスペクティブの環境ですか?

レトロスペクティブは、スプリントを振り返り、良くするものです。

そんなレトロスペクティブを、振り返り、良くする仕組みは出来ていますか?

レトロスペクティブに対して、TRYやチャレンジが出来る環境を作るためにも、
今レトロスペクティブに対して向き合ってみて、チャレンジしてみてはいかがでしょうか!

【一週間振り返り】外部の方との交流の一週間でした【289日目】

1.今週一週間の感想(ざっくり)

色んな人と交流した一週間だった

2.良かったこと

残り2ヶ月の計画できた
 →プログラミングもマネジメントも勉強頑張る

新しいレトロスペクティブのテンプレ作成完了
 →明日本番

始めましてorお久しぶりの外部の方4人と交流。
 →ディナー2回、家招く1回。

目標全達成!どころか予定よりよい!!!
あと、比較的明るく話す努力できてたと思う!

3.もっとこうしたかったこと

特になし!いい一週間でしたね!

4.新しく気づいたこと

VRを布教するのちょーたのしい。
夢中になって素?っぽいの出てるの見るのちょーたのしい。

定期的に自分褒めるって大切。
あと、今めっちゃ悩んで焦ってるけど、新卒2年目なんて悩むもの。って思うよろし。

5.来週したいこと

新レトロスペクティブ頑張る。そして振り返る。
Laravelのローカル開発環境を作る。

6.その他

テンプレ作ってよかった。ぶっちゃけ一週間の振り返り面倒って一瞬思った。
過去の私ナイス!!!

アレクサで音楽再生のプチテク2つ【288日目】

音楽再生いろいろ試してみた

見つけたプチテク2つ書いてみます

『行ってきます』

アレクサ、行ってきますって言ったら、音楽が止まります。

他のものは試していませんが、常駐系のものは、行ってきますで止まる可能性が高いです。

何がいいって、行ってきますって言えばだいたいのもの止まるので、
何も考えずに行ってきますって言えばいいのが良いです。

早送り・巻き戻し

実は、音楽の早送りもあります。

『早送りして』で音楽が少し先で再生されます。
『巻き戻しして』で音楽が戻ります。

ギターソロやサビが待ちきれない時に便利ですね!

プチテクいろいろありそう

特定のコマンドリストとかはないので、
ユーザー間で見つけたコマンドをどんどんシェアしたいですね!

こんな言い方で○○できたよ!っていうのがあれば、ぜひ教えてください!

クラス図UMLの基本を勉強したときのメモ【287日目】

注意

メモ書きです!

基本

□を3つ重ねて、
一段目にクラス名
二段目にフィールド
三段目にメソッド

各フィールド値やメソッドの左に、privateは-、publicは+、protectedは#をつける

is a 関係(継承、実装)は、---▷で、▷の先にinterfaceなど継承元を書く。

has a 関係(内包、保持)は、ーーー◇で、◇の先が持っているクラス。
このとき、注目すべきはフィールドの値。
フィールドの型がなにかのクラスのインスタンスなら、has a関係疑う感じ。
ArrayListとかもあるから注意。

依存関係。例えば、関数内でインスタンス化したり、引数に取ったりするが、フィールドには持たない場合は、
ーーー▷で書く。
フィールドには持たないけど、内部でインスタンス化等するので、依存している。依存元がなかったら動かない。

勉強した感想

他の人のプログラムをぱっと見ると少しコードが多いだけでわからなくなる。

ただ、クラス図を見るだけで結構印象変わりますね。

例を作れたら良いな。