ねこさんとへびさんの新人技術ブログ

新人エンジニアのねこさんとへびさんの、技術向上のためのブログです。

Memo!tarボールを作る

gzip形式のtarアーカイブを作成

tar zcvf {archivename}.tar.gz {filename}

オプション

-z --gzip
アーカイブの形式にgzip形式を指定する
-c --create
新しいアーカイブを作成する
-v --verbose
処理されたファイル一覧を詳細表示する
-f --file=ARCHIVE
アーカイブファイル名の指定

gzip形式のtarアーカイブを展開

tar xvf {archivename}

オプション

-x ---extract, --get
アーカイブからファイルを抽出する
-v --verbose
処理されたファイル一覧を詳細表示する
-f --file=ARCHIVE
アーカイブファイル名の指定


(byへびさん)

Memo!実用的ではないかもしれないメールアドレスのバリデーション方法 - PHP

PHPにはユーザーが入力した値を簡単に検証することができる仕組みがあります。
例えば$_POST[’variable_name']の値を受け取るとど同時にフィルターをかけたい場合、以下のように書きます。

filter_input ( int $type , string $variable_name [, int $filter] )
$filterが省略された場合は、検証はなされず$_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!第六回 ねこへび勉強会

f:id:tksptan:20180807125155j:plain

第六回ねこへび勉強会(8/4) 開催です。パフパフ
写真は勉強スペース。
クーラー効いているし駐車場含めて無料なんですよ。最の高。

今回の勉強会でやったこと

週に一度のオンライン勉強会で目標管理システムの画面レイアウト図をねこさんに作成してもらっています。
今回はログイン画面の画面レイアウト図から、テーブル設計と作成をしました。

画面レイアウト

f:id:tksptan:20180807125710j:plain

画面レイアウトからログイン情報に必要なエンティティを考える

  • ユーザーID
  • ユーザー名
  • パスワード(※hash値)
  • メールアドレス

仮データを作ってみる

仮データからデータ型を考える

f:id:tksptan:20180807181945j:plain

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申込みしなきゃな~(グズ)

8月予定

NHKゴガク まいにち中国語ラジオ講座 8月
・書籍「キクタン」
・書籍「中国語の文法書」

技術

進捗

着手中:
15. WordPress 公式サイトのチュートリアルを一読する
・完了
はじめての WordPress - WordPress Codex 日本語版
17. WordPress『Outdoor Begginer』というブログ(サイト)を作成する
・作成中
41. Progate 無料分全部 終わらせる
SQL 学習コース1完了
・Swift 学習コース1完了
48. 書籍「エンジニアのためのWordPress開発入門」読了
・完了

8月予定

WordPressでブログ(サイト)作成
・速習!JavaScript 1記事書く
・MySQL8インスコ
・Progage

数学

進捗無し(^-^;)

8月予定

・折り紙

数学か?というツッコミは無しで。

登山

進捗

61. ハイキング 15回(近所の里山OK)
・ ハイキング 2回(乗鞍岳沢登り)
63. 読図講習に参加する
・完了

8月予定

木曽駒ケ岳唐松岳に行く
・そのほか近所の里山

運動

進捗

71. 450分何かしら運動
・ランニング、ウォーキング 31分

8月予定

・ランニング、ウォーキング

7月はちゃんと時間を計測していなかった。これからは測る。

美容・健康
76. 5キロ痩せる

*進捗

・ダイエット中

生活・習慣

*進捗

82. ブログを60本書く
・4本完了
84. 家計簿をつける
・一応はつけてるけど漏れがすごい

8月の目標

ブログ目標10本!
家計簿

ブログはやる気になればすぐ達成できそうだ。

教養

進捗

90. 技術語学、雑誌以外のジャンルの本を15冊読む
・1冊
└ドキュメント 単独行遭難 
神々の山嶺 1(コミックス)
※コミックスはカウントしない

コミックス含めて全然本読んでなかった。
映画にいたっては1本も。

その他

進捗

99. 大町、安曇野、諏訪、上田、白馬にそれぞれ一回ずつ(運転して)行く
・大町 完了

8月予定

安曇野に行く

感想

7月はほとんど目標を意識してなかったので進捗率悪し。
8月はもっと計画的に。
「○○を一読する」系の目標、読みはしたけど理解したか自信がないという状況です。
この状況で完了にしていいのか悩みます。

(byへびさん)

作業中のBGM - チリヌルヲワカ

こんばんは!

ちょーっと忙しくなると、すぐにブログが書けなくなるへびさんです。
メモ程度のものでいいから、何か…と思いつつ時間が過ぎてゆく。
今日もほとんど時間がとれないので、ただ自分のお気に入りの作業BGMを公開するだけという誰も得しない記事をあげますw

栄えある第一回目は(続ける気か)… 今一番はまっていて特に運転中はエンドレスで聴いているチリヌルヲワカの楽曲から三曲ご紹介!

極楽浄土


「極楽浄土」チリヌルヲワカ

絶対値


「絶対値」チリヌルヲワカ

 

ドルチェ


「ドルチェ」チリヌルヲワカ

 

どんなに好きなアーティストでも、全部の曲が好きになれるかというとそうでもない私ですが、チリヌルヲワカは何聴いても好きなんですよ。
365日聴いてても飽きないし、相性がいいらしい。

(byへびさん)

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へびさん)

参考
MySQL :: MySQL 5.6 リファレンスマニュアル :: B.5.2.10 パケットが大きすぎます

Rpt!乗鞍岳登ってみた

今日は乗鞍岳に登ってきました♪
目指すは主峰剣ヶ峰(けんがみね)
初心者が気楽に登れる…らしい畳平からのルートです。(私はどうやら初心者以下)

f:id:tksptan:20180711214425j:plain

 

畳平~肩ノ小屋まで
勾配の少ない整備された歩道から、風光明媚な景色が楽しめました。

f:id:tksptan:20180711221317j:plain

歩道はこんな感じで山とは思えないほど歩きやすい。

f:id:tksptan:20180711221404j:plain


剣ヶ峰口~蚕玉岳

ここからは登山っぽくなってきます。
ここからは、ほぼガレ(大きめの岩)とザレ(小さめの岩と砂)の道。
ザレの方が一見安全そうですが、下りもの凄く滑りやすいのと油断するのとで、案外ザレの方が危険と感じました。

f:id:tksptan:20180711222527j:plain

f:id:tksptan:20180711223255j:plain

残念ながら山頂付近はガスガス
本来はここから山頂の神社が目視できるそうだ。

f:id:tksptan:20180711223319j:plain

蚕玉岳~剣ヶ峰
山頂直前は急坂です。しかもガレです。
登りはまぁいいです。下りのことを考えてみて下さい。
初心者コースということで危険箇所はないと言う前提ですが…怖いわ。
でもみなさん凄いスピード(当社比)で降りていくので、へっぴり腰でトロトロ降りている自分が恥ずかしい。なんとかせにゃなぁ。

f:id:tksptan:20180711224115j:plain

そして到着!
雲が多くて遠くの山は見えないですけどガスが晴れてよかったです。

f:id:tksptan:20180711224730j:plain

f:id:tksptan:20180711224758j:plain

下山
狭い山頂でお昼を食べて撤収です~。
疲れはしないが怖い下山のほうが嫌い。はやく慣れて好きになりたい。
往路は富士見岳に寄り道して帰りました。

f:id:tksptan:20180711225228j:plain

左奥のピークが富士見岳の山頂です。

メモ
登山道にかかる雪渓は、先週末の大雨で溶けきっていたらしく出現しなかった。

(byへびさん)