こんにちは!スタイル・エッジLABOのやっすんです。
Laravelでバリデーションを実装するとき、 「max:256」のように、呼び出したバリデーションの後ろにコロンでパラメータを渡すことがありますよね。
今日はLaravelのカスタムバリデーションでもこのようなパラメータを渡せるようにする方法をご紹介します。
なお、Laravelのバージョンは5.5、PHPのバージョンは7.1で実装しています。
こんにちは!
スタイル・エッジLABOのしんちゃんです。
今回、我々スタイル・エッジLABOメンバーは、2019/09/08に開催された
「いい感じにスピードアップコンテスト」、通称「ISUCON」に参加しました!
ISUCONって何??っていう人のために、、、
「ISUCON」...お題となるWebサービスを、決められたルールの中で
限界まで高速化を図る、LINE株式会社主催のチューニングバトル
そうです!
ISUCONとは、過去の実績など一切関係ない、己の知識と経験だけで
勝負を行うガチンコバトルです。
スタイル・エッジLABOメンバーも自身の意地とプライドにかけ、
休日にも関わらず参加してきました。
今回の記事では、大会参加の様子を伝えたいと思います。
10時開始ともに全チーム一斉にスタートしました。
が....
webサービスが渡されてこない...?
事前に運営より準備するよう言われていたインスタンスにwebサービスが降りてきません。
なんとか我がチームインフラ担当のK氏による機転で、
別のインスタンスを作ることで、運営から、webサービスを受け取り、
スタートラインに立つことができました。
他のチームの反応を見ると、まだほとんどのチームがスタートできておらず、
おそらくこの「魔の足切り」で多くのチームが脱落したのでは、、と感じています。
その時に本日の最高順位「17位」を叩き出しました(^ ^)
なんとかスタートラインに立てたので、皆それぞれの役割に分かれ、取り掛かりました。
序盤の役割としては大きく分けて、「環境構築隊」「コード隊」の二つです。
想定外だったのは、ローカル環境が上手く作れず、
ローカルでwebサービスを動かせなかったことです。
これにより、変更点を加えた場合、いきなりベンチマークを行わければいけません。
これのおかげで結構な手間と時間を食われました...
↓ レンジに行く時間を惜しみ、冷たい弁当を食べるメンバー
当日、意識したところは大きく分けて以下の三つです。
① SQL文で削れるところはないか
② DBにindexを貼る
③ 画像に圧縮をかけて下ろせないか
③は業務で同じようなところがあったので、奮闘の結果なんとかできました。
①②に関しては、目に付くところは大方出来たのではないかと思います。
何度か落ちてしまい、今年も失格かな、、という場面もありましたが、
なんとか最後まで奮闘でき、失格にはならず終えることができました。
また、台風が来ていたこともあり、16時解散だったため
早めの退散にはなりましたが、できることはやったと思います。
お待ちかねの結果はというと、、、
277組中132位です✨
後日、スコアが0ではない人の中で順位を見てみると、
下から数えた方が早かった です。。
しかし何にせよ、前回は「失格」だったので、大きな進歩です!w
今回我々は、PHPを選んでやりましたが、
結果を見ると、ほとんどの組みがGoを使っていました。
本戦出場チームにはPHPを使っていたチームも2組いましたので、
我々も努力次第では予選突破できるかもしれない、という夢はあったので、
来年は本戦出場を目指して頑張りたいです🔥
スタイル・エッジLABOでは、一緒に働く仲間を募集しています。 もし興味を持っていただけましたら、ぜひ採用サイトものぞいてみてください!
こんにちはスタイルエッジLABOのSです。
初めて元Sler(Laravel初心者)がLaravelを使ってみた感想などまとめます。
この記事はこれまでPHPでのシステム開発に触れる機会が少ないエンジニアでも
理解が深まったということでこれからPHPに触れていく方に少しでも役に立てば幸いです。
app・・・アプリケーション本体 config・・・諸々の設定(設定というより系統別の定数群など諸々) database・・・migration,seederなどデータベースに関連するファイルを格納 public・・・ユーザーに公開するディレクトリ(css, javascriptなどを格納) resources・・・主にビュー(画面のテンプレート)など格納する routes・・・大雑把に言うと入力や選択されたURLを設定に基づいて該当のコントロールファイルなどに 導くファイルが格納される
※その他、ディレクトリは多数は存在しますが割愛します。
Laravelでは
php artisan make:auth php artisan migrate
を実行するだけでサクッと認証フォームが作成できます。
作成したフォームを表示した結果がこちら。
※実際にはphp artisan migrateを実行しなくてもフォームの表示だけならできます。
ちょっと調べてみるとtwig, volt, smarty, mustacheなど
テンプレートエンジンは多々あって
比較したり使ったりしてみると面白いかと思います!
特筆すべきではないかもしれませんがディレクティブに対して@を付けるため
他のテンプレートエンジンと異なりディレクティブがわかりやすくお気に入りです!
例)
@if ($cnt > 0) ※ディレクティブ部分 {{ $cnt }}件のデータがあります。 @else データがありません。 @endif
※ディレクティブ・・・コンパイラーに与える指示文。
クエリビルダーとはデータ取得のために発行するSQLを作成する必要がありますが、
それを簡単に組み立てる仕組みです。
慣れさえすれば比較的容易にSQLを作成できると思います。
例えば
$a = DB::table('A') ->whereIn('id', [1, 2, 3]) ->get();
のように「A」テーブルよりカラム「id」が「1,2,3」と一致するデータの結果を取得することができます。
※getメソッドは、PHPのstdClassオブジェクトのインスタンスを結果として含む、
Illuminate\Support\Collectionで返却されます。
但しクエリビルダーで作成されるSQLについては
必ず実際に発行されるSQLを確認しましょう。
例えば
SELECT * FROM A WHERE id IN (1, 2, ・・・)
のようなデータが増えると実行エラーが発生するようなSQLが
意図せず出来てしまう恐れもあります。
動いたからといって結果を確認せずに使用するのは控えましょう。
SQLの良し悪しはレスポンスに直結します。
つまりSQLが遅い⇒時間がかかる⇒使用者のストレスが溜まる⇒矛先が管理者へ
という悪い循環が出来てしまい誰も幸せになりません。
なので設計・製造時から必ず考慮しましょう!
※遅いSQLを組む必要があるというのはDBの構造がそもそも・・・
という可能性もあるので設計の時点で意識しておくことが大事です。
今回はLaravelについて触れてみました。
覚えることは色々ありますが逆に覚えてしまえば非常にわかりやすい印象を持ちました。
世の中には色々とフレームワークが存在します。
それぞれ一長一短があり常にベストなフレームワークは存在しないと思います。
開発が始まった時の状況やニーズで選択できるものも変わってくると思います。
その時に取捨選択するための情報を持っていることが大切です。
なので情報に対する感度を高めておくことが改めて大切かなと思いました。
今後更にコア部分にも触れられることを期待・・・したいと思います!
※初心者でも先輩方に教わりながら今回学ぶことができよかったです。
スタイル・エッジ LABOでは、一緒に働く仲間を募集しています。 もし興味を持っていただけましたら、ぜひ採用サイトものぞいてみてください!
初めまして!スタイル・エッジ システム事業部のMです。 業務ではPHPでの実装をはじめ、システム設計やチームマネジメントなど色々と経験を積んできています。 また、セキュリティ顧問になるべくセキュアコーディング面での技術向上と後輩エンジニアへの指導も行なっています。
今回はみなさん一度は作成したことのあるフォーム画面について、 少し似ている二つの攻撃とその対策についてお話しできればと思います。
例えば、この攻撃に対する脆弱性があるサイトの
<script>alert('あなたの個人情報を取得しました。')</script>
をURLに含むリンクをクリックすると上記メッセージがポップアップで表示されます。
この場合は利用者に実害はないですが、それでも利用者を不安がらせ、サイト運営者への信頼を損なうことになります。
接続情報を取得するようなスクリプトであれば、第三者による不正アクセスも可能になってしまうため特に注意が必要です。
概要
CSRFはwebページ内の特定の機能を意図せず実行させられる攻撃です。
SNS・掲示板に犯行予告の書き込みを行なってしまうなど、かつて大きな話題になりました。
この攻撃に対する脆弱性があるサイトにログインした状態のまま「『〇〇で△△する』と投稿する」URLのリンクをクリックした場合、
ログインしているユーザとしてその内容を投稿してしまいます。
つまり、攻撃者は他人の正規アカウントを利用して投稿を行うことができるのです。
身に覚えのないうちに犯罪予告をしてしまうなど、この攻撃により利用者が大きな被害を被る可能性があるので
運営者としては防いでおくべき攻撃の一つです。
対策
対策としては以下が挙げられます。
今回挙げた内容は数多くある攻撃・対策のほんの一部です。 この他にもSQLインジェクションやメールヘッダインジェクションなど、 フォームに関連するセキュリティ対策だけでも様々ありますので、 気になった方はぜひ調べてみてください!
スタイル・エッジ システム事業部では、一緒に働く仲間を募集しています。 もし興味を持っていただけましたら、ぜひ採用サイトものぞいてみてください!
こんにちは〜
スタイル・エッジ システム事業部のしんちゃんです。
今年(2019年)の4月から新卒未経験でシステム事業部に入社しました。
今回は、もしあなたが、新卒未経験でエンジニアを目指そうと思っているなら、
これだけは知っておいたほうがいいよーということを2つほど、
私がこの2ヶ月半で感じたことを踏まえてお伝えしようと思います。
これは結構重要なんじゃないかなと思います。
私の友達にも何人かエンジニアになった人たちがいますが、このことを知らずに入り、
「全然コード書かないじゃんっ」 「思ってたことと全然違うっ」
などと言っている人が結構います。
実際私もこのことを知らず、ITエンジニア = "コードを書いてシステムやアプリを作る人"と思ってました。
★主なITエンジニアの種類★
わかりずらく申し訳ないですが、こんなに種類があるんだーとわかって頂ければ本望です。
また、ITエンジニアの種類は、これでも一部でしかないし、人によって捉え方が様々なので、
興味のある方は調べてみて、自分がどんなエンジニアを目指したいのか考えてみてください。
IT業界を目指す人なら知ってる方が多いかと思いますが、
私はこの業界に入るまであまりわからなかったので、
簡単に解説しておきます。
先ほどの説明で、色々と言語がでできたと思いますが、
まず、プログラミング言語とは...から説明しときます。
★プログラミング言語とは
以下に簡単な具体例を示します。
★プログラミング言語の例
というような感じです。
話したい(作りたい)ものによって使う言語が違うということだけわかって頂ければ大丈夫です。
(全部一緒の言語にしてくれればいいのに...)
自分がこの先どんなものを実現したいかが明確にある人は
調べてみた方がいいと思います。
今回はこんな所で終わろうと思います。
最後に
スタイル・エッジ システム事業部では、一緒に働く仲間を募集しています。
もし興味を持っていただけましたら、ぜひ採用サイトものぞいてみてください!
はじめまして!スタイル・エッジ システム事業部のyskaです。
業務としては、Laravelでアプリケーションを開発しております。
今回のテーマは「DBのINDEX」です。