メモしよっと

なんでもメモするブログです。

(メモ)第一正規化 - 正規化

第一正規化

スカラ値の原則

スカラ値とは

単一の値のこと

第一正規化におけるスカラ値の原則とは

一つのセルに一つの値だけになるようにすること

なぜスカラ値でなくてはならないか

スカラ値でないと、主キーが各列の値を一意に決定できないから

実践: 2つの解決方法で第一正規形にしてみる

今自分が作ろうとしている植物図鑑データを使って練習してみます。

花マスタ

花ID 花名
044003001 ミスミソウ 白、桃、赤、青、紫、黄色

色で花をグループ分けをする必要があるため”白、桃、赤、青、紫、黄色”というテキストデータではなく、個々の色情報を持たせたいです。

方法1 横に展開

花マスタ

花ID 花名 色1 色2 色3 色4 色5 色6
044003001 ミスミソウ

方法2 縦に展開

花マスタ

花ID 花名
044003001 ミスミソウ
044003001 ミスミソウ
044003001 ミスミソウ
044003001 ミスミソウ
044003001 ミスミソウ
044003001 ミスミソウ

方法1の場合は、最初に想定した色の数を超える花がでてきた時、テーブルにカラムを追加しなければ色の登録ができなくなります。 拡張性がないため、縦に展開する方法を採用します。

主キーを考える

方法2の列を特定するためには、”花マスタ”テーブルの主キーを{花ID、花名、色}にする必要があります。 花に色情報が無いってことはないのですが、データ管理の都合上、色を登録しなくても花ID、花名を登録できるようにしておきたいです。

主キーにnullはセットできない ため、テーブル分割を行います。

花マスタ

花ID 花名
044003001 ミスミソウ

花の色テーブル

花ID
044003001
044003001
044003001
044003001

(略)

参考

www.seshop.com

# 2024年に挑戦したい100のこと

語学

No 挑戦したいこと 目的目標 達成条件
1 英語学習 英語能力向上 TOEIC600点
2 中国語 日常会話ができるように スクールに通う、NHK 毎日中国語を全て聴く
3 ChatGPT学習法確立 ChatGPTを利用して学習する ChatGPTを使った英中学習法を確立し、ブログで成果報告する

運動

No 挑戦したいこと 目的目標 達成条件
4 散歩、ウォーキング 習慣化 週当たり5kmあるく
5 ランニング 体力増強 1km7分30秒、15km連続run
6 筋トレ、ストレッチ 登山ボディを作る 山渓登山ボディで紹介されているものをやる
7 縄跳び 持久力向上 15分/週

美容

No 挑戦したいこと 目的目標 達成条件
8 ダイエット 健康 10kg減、あすけんをつける
9 歯の治療 美歯 歯医者に通う、毎日フロス
10 マッサージ リラックス 毎晩やる
11 ネイルケア 清潔感向上 週末ケア
12 メイク・スキンケア 清潔感向上 肌荒れ改善、YouTubeで先生を探す
13 顔ヨガ 小顔 100均で買ってきた本を実行する
14 ファッション 清潔感向上 雑誌等で年相応のファッション研究

ハイキング、登山

No 挑戦したいこと 目的目標 達成条件
15 登山、ハイキング 体力向上 26回/年
16 スノーハイク 雪に慣れる 1回/年
17 テント泊 技術向上 デビュー
18 車中泊 技術向上 デビュー
19 ウィルダネスファーストエイド 技術向上 情報収集
20 読図 技術向上 本を読む、実地訓練1回
21 ロープワーク 技術向上 本を読む
22 観天望気 技術向上 本を読む
23 山ごはん 技術向上 メスティンで米をたく、定番料理を決める

技術

No 挑戦したいこと 目的目標 達成条件
24 ChatGPTを使いこなす 知識量増加 APIを使って何か作る
25 Pythonを習得する 言語習得 購入済みのUdemyを終わらす
26 植物図鑑配信 知識量増加 AWSで配信する
27 Mapbox 配信 3Dルート地図を完成させる
28 GISを習得する 知識量増加 位置情報エンジニア養成講座読了
29 Web APIを習熟する 知識量増加 MDNを参考にサンプルスクリプトを作成する
30 Node.jsを習得する 言語習得 購入済みのUdemyを終わらす
31 Vue.jsかNuxt.jsを触る 知識量増加 触ってみる
32 ポートフォリオ 作成 完成させる
33 勉強会 情報収集 2回参加
34 コンピューターサイエンス 知識量増加 Recursion中級までやる
35 iOSアプリ 言語習得 何か作る(優先度低)

植物

No 挑戦したいこと 目的目標 達成条件
36 花探し ヤマケイ野草図鑑掲載の花を探す 新規100種
37 植物図鑑作成 花知識増加 完成
38 高校生物 植物知識増加 植物に関するTryItを視聴する
39 園芸 素敵なお庭 花を種から育てる
40 多肉植物 素敵なインテリア まずは購入する
41 押し花 作成 1つ以上作成する
42 バーバリウム 作成 1つ以上作成する

ライティング

No 挑戦したいこと 目的目標 達成条件
43 ブログ 文章力向上、SEO 紀行ブログ30件、メモブログ80件
44 SNS 情報発信、収集 SNSを活用する
45 二次創作 文章力向上、娯楽 1作書く(優先度低)
46 漢詩 教養 本を1冊読む、中国語で朗読する
47 俳句 教養 10句読む
48 ISV練習法 情報収集 ISV練習法について調べる

No 挑戦したいこと 目的目標 達成条件
49 ドライブ 苦手意識克服 高速5回、未踏の場所に10回行く、バック駐車30回
50 メンテナンス 安全 セルフメンテする
51 事故対応マニュアル作成 安全 完成
52 保険関係 安全 保険会社見直し、JAF加入

本・映画

No 挑戦したいこと 目的目標 達成条件
53 読書 教養 年間24冊読了、うち小説を5冊読むこと
54 書評、レビュー 文章力向上 SNS等の書く
55 漫画 娯楽 チ。と呪術廻戦を読む。あまり読みすぎない
56 映画 娯楽 10作

お金

No 挑戦したいこと 目的目標 達成条件
57 資産運用、投資 蓄財 NISA
58 家計簿をつける 蓄財 習慣化する
59 アフィリエイト 蓄財 やる
60 ふるさと納税 蓄財 やる
61 貯金 蓄財 100万貯める
63 お得情報リサーチ 蓄財 隔週でリサーチする

旅行、お出かけ

No 挑戦したいこと 目的目標 達成条件
64 国内旅行 見聞を広める 未訪問の自治体20箇所にいく
65 海外旅行 見聞を広める 1箇所にいく
66 LLC利用 情報収集 LLCについて調べる、利用する
67 温浴施設 見聞を広める 新規開拓10店舗
68 城巡り 見聞を広める 未訪問の3箇所にいく
69 神社仏閣巡り 見聞を広める 10箇所訪問、お参りマナーを学ぶ(1h)、古事記を読む
70 博物館、美術館巡り 見聞を広める 3箇所訪問
71 動物園、水族館巡り 見聞を広める 1箇所訪問

生活、家事

No 挑戦したいこと 目的目標 達成条件
72 断捨離 物を減らす 週1ゴミ袋満杯にして捨てる、同人誌半分にする
73 清掃 生活改善 毎日1箇所清掃
74 料理 習慣化 週に一度作り置き料理を作る
75 お菓子づくり 娯楽 月1回
76 減塩料理 知識増加 減塩料理のレシピを学ぶ
77 スケジュール管理 生活改善 手帳を活用する
78 生物をかう 生活改善 メダカとか

ものづくり

No 挑戦したいこと 目的目標 達成条件
79 イラストを描く 技術向上 1枚以上
80 刺繍 技術向上 とにかく始める
81 折り紙 娯楽 何も見ずに10個作れるようになる
82 ソーイング 技術向上 修繕ができるようになる
83 しおり作り 娯楽 2枚以上
84 アイロンビーズ 娯楽 キャラものを1つ作る
85 フォトカレンダー 娯楽 2025年のカレンダーをTOLOTで注文する

コレクション

No 挑戦したいこと 目的目標 達成条件
86 鉱石 娯楽 5個入手

音楽

No 挑戦したいこと 目的目標 達成条件
87 音楽鑑賞 教養を身につける 色々なジャンルの曲を聴く、Fedibirdで曲紹介する
88 ウクレレ 記述向上 買う、簡単な曲を演奏する

雑学、リスキリング

No 挑戦したいこと 目的目標 達成条件
89 新聞 見聞を広める 毎日ざっと目を通す
90 統計、数学 知識増加 本を1冊やる
91 地学 知識増加 本を1冊やる
92 美術 知識増加 美術史を学ぶ

健康

No 挑戦したいこと 目的目標 達成条件
93 瞑想 精神の安定 やってみる
94 禁酒 健康 隔月禁酒
95 脱コーヒー 健康 お茶に移行する
96 お菓子我慢デー 健康 年100日
97 あすけん 習慣化 できるだけ毎日あすけんをつける
98 介護、認知症について調べる 健康 調べる

その他

No 挑戦したいこと 目的目標 達成条件
99 アナログゲーム 娯楽 アナログゲームを買い揃える
100 YouTube 情報収集 面白いorためになるチャンネルを開拓

# 2023年に挑戦したかった100のこと

挑戦したいこと

この記事の振り返りです。 memooot.hateblo.jp

書きっぱなしにして、こまめに振り返らなかったために惨敗です。

No 挑戦したいこと ジャンル 目標 結果
1 英語 語学 TOEIC600点 勉強は習慣化されたものの、TOEICは受けずじまい
2 中国語 語学 日常会話 気が向いたら勉強する程度
3 散歩 運動 週7km以上 1ヶ月程度くらいしか続かなかった
4 ランニング 運動 15km走れるようになる 未着手
5 筋トレ 運動 習慣化 月に2~3回程度
6 ヨガ、顔ヨガ 運動 体験 1回くらい
7 ダンス 運動 体験 未着手
8 マッサージ 運動 習慣化 気が向いた時だけ
9 スノーシュー 運動 最低1回 (達成)1回(霧ヶ峰)
10 ボルダリング 運動 最低1回 未達成
11 日曜開発 技術 質より量で沢山作る そこそこ
12 言語習得 技術 Python、Node.js そこそこ
13 AI 技術 スクールに通いたい 未着手
14 iOSアプリ 技術 何か作る 未達成
15 ポートフォリオ作成 技術 自分アピール用 未着手
16 情報基礎 技術 Recursionで復習 数回しかやらなかった
17 資格取得 技術 何か取る 未達成
18 AWS 技術 環境構築する 未達成
19 電子工作 技術 何か作る 未達成
20 自作PC 技術 作る 未達成
21 野草探し 植物 図鑑の花を探す-50%
22 花を育てる 植物 種から 未着手
23 寄せ植え 植物 鉢を作る 未着手
24 多肉寄せ植え 植物 鉢を作る 未着手
25 花壇づくり 植物 花壇を作る 未着手|
26 バーバリウム 植物 経験 未着手
27 野草図鑑 植物 サイトを作成 進捗5%
28 折り紙 工作・手芸 作る 未着手
29 刺繍 工作・手芸 完成させる 未着手
30 手作りアクセ 工作・手芸 体験 未着手
31 DIY 工作・手芸 何か作る 未着手
32 ストーンペイント 工作・手芸 作る 未着手
33 アイロンビーズ 工作・手芸 作る 未着手
34 ソーイング 工作・手芸 技術向上 未着手
35 断捨離 生活 一日一捨 全然ダメ
36 料理 生活 一日一品 一週間2品くらい…
37 お菓子作り 生活 体験 未着手
38 家事研究 生活 知識増加 未着手
39 ボランティア 生活 体験 未着手
40 介護勉強 生活 知識増加 未着手
41 ダイエット 生活 12kgやせる 未達成
42 投資&マネー お金 積み立てnisaなど 未着手
43 メルカリ お金 何か売ってみる 未着手
44 節約 お金 家計簿付け 未達成
45 海外旅行積立 お金 目標10万 達成
46 100均 お金 商品紹介 未着手
47 ドライブ 運転に慣れる 多少は
48 車の手入れ 知識向上 あまり
49 メイク、スキンケア 美容 マメに手入れ あまり
50 ネイル 美容 習慣化 未着手
51 アロマ・お香 美容 習慣化 未着手
52 読書 本・映画 週1冊 完読はできなかったが毎日何かしら読んだ
53 漫画 本・映画 時々読む たくさん読んだ
54 書評 本・映画 モブログ Fedibirdに
55 映画 本・映画 月1本 未達成
56 旅行 お出かけ 未訪問の自治体に行く そこそこ
57 登山・ハイキング お出かけ 沢山登る そこそこ
58 温泉巡り お出かけ 月2回 三か月に1回くらい
59 サウナ、岩盤浴 お出かけ 年2回 1回
60 キャンプ お出かけ 体験 未達成
61 ゴハン お出かけ 体験 1回
62 城跡、史跡巡り お出かけ 月1回 未達成
63 美術館・博物館巡り お出かけ 年2回 未達成
64 水族館・動物園 お出かけ 年2回 未達成
65 神社仏閣巡り お出かけ 沢山 達成
66 バードウォッチング お出かけ 体験 未着手
67 ブログ 文筆 習慣化 達成
68 SNS 文筆 習慣化 達成
69 俳句 文筆 体験 未達成
70 二次創作 文筆 2作 達成
71 手帳デザイン 文筆 習慣化 未達成
72 アナログゲーム ゲーム 勝利 達成
73 パズルゲーム ゲーム ハイスコア 達成
74 将棋 ゲーム 1勝 未達成
75 ナノブロック ゲーム 2つ 未達成
76 アナログゲーム ゲーム 勝利 重複
77 ドローン ゲーム 体験 未達成
78 鉱石集め 収集 10個 3個
79 マンホール写真 収集 撮る 未達成
80 アナログゲーム 収集 勝利 未達成
81 御朱印 収集 素敵なのがあれば 未達成
82 カラオケ 音楽 英語曲マスター 未達成
83 ウクレレ 音楽 体験 未達成
84 音楽鑑賞 音楽 沢山聴く 達成
85 救命活動 登山関係 知識向上、実技 未達成
86 ロープワーク 登山関係 知識向上、実技 未達成
87 読図 登山関係 知識向上、実技 未達成
88 観天望気 登山関係 知識向上、実技 本を読んだ
89 山の知識検定 登山関係 シルバー 検定自体が無くなった
90 地理・地学 登山関係 知識向上 そこそこ
91 法律 雑学 復習 そこそこ
92 クイズ 雑学 クイズ番組を見る よく見た
93 数学 雑学 復習 未着手
94 統計 雑学 知識向上 未着手
95 歴史・伝統 雑学 知識向上 未着手
96 色彩検定 雑学 知識向上 未着手
97 写真 アート 撮る よく撮影した
98 イラスト アート 描く 未着手
99 動画編集 アート 知識向上 未着手
100 生き物を飼う アート 飼う 未着手

ブログ、開発、旅行関係以外の目標はからきしでした。 今年はもう少し具体的な目標設定をしたい。(1月15日までに)

FigmaでFont Awesomeを使う方法

忘れそうなのでメモ

手順

1. Font Awesome公式ページにアクセス

fontawesome.com

2. アイコンをコピー

アイコン一覧の中から、Figmaで使いたいアイコンをクリックするとポップアップが表示する。 画面右上の小さなアイコン(Copy Glyphと表示されているところ)をクリックすると、コピーができる

3. Figmaにペースト(貼り付け)する

Figmaのフレーム上にペーストする 一見、空のテキストオブジェクトができる。 テキストオブジェクトを選択し、右ペイン テキスト欄のフォントをFont Awesome {version} Freeに変更 文字タイプをSolidに変更する

4.完成!

No3.によりFont Awesomeのフォントが表示できるようになり、アイコンが表示される。

参考

Figmaでテキスト内にアイコンを挿入する方法 | wentz-design.com

$_POST['fieldName']未定義と空値を別々にチェックしたい - CodeIgniter

CodeIgniterのフォームバリデーション機能を使って$_POST['fieldName']の検証を行っている。
$_POST['fieldName']が未定義の時と、定義はされた上で空値が渡された時とで検証を分けたかった。
ルールリファレンスを確認したところ、未定義と空値を判別するルールはない。
requiredを使うとどちらもfalseになってしまう。

仕方がないので、ユーザー定義検証関数を作成して、以下の検証をすることにした。

・$_POST['fieldName']が未定義の時はtrue
・$_POST['fieldName']が指定されたうえ、入力値がなかったらfalse

ルール

<?php
$this->form_validation->set_rules('fieldName', 'fieldName', 'callback_custom_min_length[fieldName]');

ユーザー定義検証関数

<?php
function custom_min_length($str, $field){

    if (!isset($_POST[$field])) {
            return true;
    }
    if ($str == '') {
            $this->form_validation->set_message('custom_min_length', 'The '.$field.' field must be at least 1 characters in length.');
            return false;
    }
    return true;
}

第一引数の$strには入力値が代入される 第二引数の$fieldには、ユーザー定義検証関数の[]で指定した値が代入される

animation-name - animationプロパティ

animation-name- animationプロパティ

プロパティ

animation-name

@keyframesとの関連付け

.box {
  width: 100px;
  height: 100px;
  animation-name: grow-progress;
}

@keyframes grow-progress {
  from {
    scale: 1 1;
  }
  to {
    scale: 5 5;
  }
}

アニメーション中間ステップの制御 - CSS Animation

@keyframes を使う

構文

開始と終了の状態を指定する

@keyframes <custom-ident> {
  from {},
  to {}
}

中間地点の状態を%で指定する

@keyframes <custom-ident> {
  0% {},
  50% {},
  100% {},
}

<custom-ident>は、キーフレームリスト(@keyframes)の識別名。 重複していれば、最後に定義されたキーフレームリストが適用される。

キーフレームが重複している場合は、キーフレームで指定されたすべての値が適用される。同じプロパティがある場合は、後で定義されたものが優先される。 例えば以下のキーフレームでは、 - top: 10px; - left:20 が適用される。

  50% {
    top: 30px;
    left: 20px;
  }
  50% {
    top: 10px;
  }