Memo!tarボールを作る
Memo!実用的ではないかもしれないメールアドレスのバリデーション方法 - PHP
PHPにはユーザーが入力した値を簡単に検証することができる仕組みがあります。
例えば$_POST[’variable_name']の値を受け取るとど同時にフィルターをかけたい場合、以下のように書きます。
どんなフィルターが使えるかは下記のページを参考にしてください。
PHP: 検証フィルタ - Manual
メールアドレスの検証には正規表現が利用されることが多いですが、マニュアルにFILTER_VALIDATE_EMAILという検証フィルタがあります。
これは使えないのでしょうか。
<?php $mail = filter_input(INPUT_POST, 'mail', FILTER_VALIDATE_EMAIL);
こんなふうに書けたらシンプルで正規表現を使うよりずっといい。
だがしかし…
先ほどのマニュアルのFILTER_VALIDATE_EMAIL欄をみてみましょう。
この検証は、e-mail アドレスが RFC 822 に沿った形式であるかどうかを確かめます。
つまり標準規格RFC 822 準拠していないメールアドレスが入力された場合、フィルタリングされてFALSEが返されてしまうのです。
そしてかつて、ドコモなど携帯キャリアのメアドが規格外仕様だった時代があったという。
使えない!
不特定多数のユーザーが入力するシステムの場合、クレームや不具合報告が届きそう。
だだ、社用メールアドレスしか許容しないなど、規格外のメールアドレスを弾ける状況であれば十分活躍してくれそうです。
(byへびさん)
Rpt!第六回 ねこへび勉強会
第六回ねこへび勉強会(8/4) 開催です。パフパフ
写真は勉強スペース。
クーラー効いているし駐車場含めて無料なんですよ。最の高。
今回の勉強会でやったこと
週に一度のオンライン勉強会で目標管理システムの画面レイアウト図をねこさんに作成してもらっています。
今回はログイン画面の画面レイアウト図から、テーブル設計と作成をしました。
画面レイアウト
画面レイアウトからログイン情報に必要なエンティティを考える
- ユーザーID
- ユーザー名
- パスワード(※hash値)
- メールアドレス
仮データを作ってみる
仮データからデータ型を考える
CREATE文でテーブルを作成する
前回の勉強会でインストールしたXAMPPのphpMyAdminを使ってCREATE文を実行。
説明したこと
・AUTO_INCREMENT
・NOT NULLキーワード
・DEFAULT
・UNSIGNED
感想
勉強会の下準備をほとんどしてなくて、ねこさんにどこまで説明するか(あるいは自力で調べてもらうか)等、方針や範囲を決めておかなかった。
CREATE文もごくシンプルなサンプルを書き換えつつ、[CREATE文でテーブルを作成する]で列挙したオプションについて説明したのみ。
今回は必要なくても、もっと詳しく伝えるべきか、情報過多にならないように徐々に伝えるべきか迷う。
(byへびさん)
100の目標-7月進捗
さて7月冒頭に決めた100の目標ですが
tkstudy.hateblo.jp
あまり気にせずに7月を過ごしておりました。
1~3年で達成できたらいいなぁと考えておりますが、目標の存在を忘れてしまうと何にもならないので、一ヶ月区切りで振り返ろうと思います。
100の目標 振り返り
語学
進捗
着手中:
8. NHKゴガク まいにち中国語ラジオ講座 7月~3月 すべて聴く
・7月完了(実は1日聴き逃した)
12. 単語テストシート(CSV)を作成する format:日,英,中 500単語
・10単語くらい
TOEIC申込みしなきゃな~(グズ)
進捗
着手中:
15. WordPress 公式サイトのチュートリアルを一読する
・完了
はじめての WordPress - WordPress Codex 日本語版
17. WordPress『Outdoor Begginer』というブログ(サイト)を作成する
・作成中
41. Progate 無料分全部 終わらせる
・SQL 学習コース1完了
・Swift 学習コース1完了
48. 書籍「エンジニアのためのWordPress開発入門」読了
・完了
8月予定
・折り紙
数学か?というツッコミは無しで。
登山
進捗
71. 450分何かしら運動
・ランニング、ウォーキング 31分
8月予定
・ランニング、ウォーキング
7月はちゃんと時間を計測していなかった。これからは測る。
美容・健康
76. 5キロ痩せる
*進捗
・ダイエット中
生活・習慣
感想
7月はほとんど目標を意識してなかったので進捗率悪し。
8月はもっと計画的に。
「○○を一読する」系の目標、読みはしたけど理解したか自信がないという状況です。
この状況で完了にしていいのか悩みます。
(byへびさん)
作業中のBGM - チリヌルヲワカ
Tips!複数のデータを一括挿入したい - マルチプルインサート
マルチプルインサート - 複数のデータを一括挿入したい
uid | user_name | age |
---|---|---|
1 | hebisan | 10 |
2 | nekosan | 5 |
上記のUSERテーブルにデータを追加したい場合、インサート文を実行すると追加出来ます。
INSERT INTO user (uid, user_name, age) values (3, 'kaeru', 99); INSERT INTO user (uid, user_name, age) values (4, 'inu', 55);
実行してみましょう。増えました。
uid | user_name | age |
---|---|---|
1 | hebisan | 10 |
2 | nekosan | 5 |
3 | kaerukun | 99 |
4 | inukun | 55 |
上記の方法、数件なら別に問題がないのですが、件数が多いと実行速度が遅くなる場合があります。
(特にトランザクションをはっている場合は顕著に遅くなります)
そこで1行のクエリで複数行のデータを挿入する方法。その名もマルチプルインサート!
valuesの次に入力したいデータの値を連ねていきます。
INSERT INTO user (uid, user_name, age) values (5, 'iruka', 21), (6, 'usami', 34), (7, 'nezukichi', 48), (8, 'hamuhamu', 48);
ではまた実行してみましょう。うん増えてます。
uid | user_name | age |
---|---|---|
1 | hebisan | 10 |
2 | nekosan | 5 |
3 | kaerukun | 99 |
4 | inukun | 55 |
5 | iruka | 21 |
6 | usami | 34 |
7 | nezukichi | 48 |
8 | hamuhamu | 48 |
COMMITや、通常INSERT文が実行される過程で付属的に行われる処理が一度で済むため早くなるようです。
ただ無制限に登録できるわけではありません。
MySQLのクエリの長さには上限があります。
ので実装する時はエラー制御しておいたほうがいいですね。
上限の確認
show variables like 'max_allowed_packet';
上記のクエリを実行してみましょう。
Variable_name | Value |
---|---|
max_allowed_packet | 1048576 |
私の環境では1M(デフォルト)であることが判りました。
上限の変更
上限をするにはmy.cnfファイルを編集してMySQLを再起動します。
my.cnf
max_allowed_packet=16MB
(byへびさん)
Rpt!乗鞍岳登ってみた
今日は乗鞍岳に登ってきました♪
目指すは主峰剣ヶ峰(けんがみね)
初心者が気楽に登れる…らしい畳平からのルートです。(私はどうやら初心者以下)
畳平~肩ノ小屋まで
勾配の少ない整備された歩道から、風光明媚な景色が楽しめました。
歩道はこんな感じで山とは思えないほど歩きやすい。
剣ヶ峰口~蚕玉岳
ここからは登山っぽくなってきます。
ここからは、ほぼガレ(大きめの岩)とザレ(小さめの岩と砂)の道。
ザレの方が一見安全そうですが、下りもの凄く滑りやすいのと油断するのとで、案外ザレの方が危険と感じました。
残念ながら山頂付近はガスガス
本来はここから山頂の神社が目視できるそうだ。
蚕玉岳~剣ヶ峰
山頂直前は急坂です。しかもガレです。
登りはまぁいいです。下りのことを考えてみて下さい。
初心者コースということで危険箇所はないと言う前提ですが…怖いわ。
でもみなさん凄いスピード(当社比)で降りていくので、へっぴり腰でトロトロ降りている自分が恥ずかしい。なんとかせにゃなぁ。
そして到着!
雲が多くて遠くの山は見えないですけどガスが晴れてよかったです。
下山
狭い山頂でお昼を食べて撤収です~。
疲れはしないが怖い下山のほうが嫌い。はやく慣れて好きになりたい。
往路は富士見岳に寄り道して帰りました。
左奥のピークが富士見岳の山頂です。
メモ
登山道にかかる雪渓は、先週末の大雨で溶けきっていたらしく出現しなかった。
(byへびさん)