Note to Self

自分用のメモ置き場

JavaScriptで日付が正しいかチェックする

以下の例ではyyyymmdd形式で入力された日付をyyyy/mm/ddに変換している

function checkDate(date) {
  let targetDate = (date).replace(/[^0-9]/g, '');

  if (targetDate.length == 8) {
    let tempDate = targetDate.match(/([0-9]{4})([0-9]{2})([0-9]{2})/);
    let y = tempDate[1];
    let m = tempDate[2];
    let d = tempDate[3];

    dt = new Date(y, m-1, d);
    if (dt.getFullYear() == y && dt.getMonth() == (m-1) && dt.getDate() == d) {
      let formatedDate = targetDate.replace(/([0-9]{4})([0-9]{2})([0-9]{2})/g, "$1/$2/$3");
      console.log(formatedDate);
    } else {
      console.log('正しい日付を入力してください');
    }
  }
}

// 動作結果
checkDate('20180201'); // 2018/02/01
checkDate('20180228'); // 2018/02/28
checkDate('20180229'); // 正しい日付を入力してください

MySQLでn分前を取得する

わすれがちなのでメモ
参考

更新されて10分以内のデータを取得する

SELECT * FROM 'テーブル名' WHERE 'カラム名' >= CURRENT_TIMESTAMP + INTERVAL - 10 MINUTE

その他

n分以外にも、n年等任意の条件に変更することができる

unit 説明
YEAR
MONTH
DAY
HOUR
MINUTE
SECOND
MICROSECOND マイクロ秒
WEEK

MySQLで特定のカラムが存在しないテーブル名を特定する

「deleteDate」が無いテーブルを特定したかったが、苦戦したのでメモ

USE information_schema;

SELECT
    temp1.table_name
FROM
    (
        SELECT DISTINCT table_name FROM columns
        WHERE table_schema = 'DB名' AND column_name != 'deleteDate'
    ) AS temp1 
LEFT OUTER JOIN
    (
        SELECT DISTINCT table_name FROM columns
        WHERE table_schema = 'DB名' AND column_name = 'deleteDate'
    ) AS temp2
ON temp1.table_name = temp2.table_name
WHERE
    temp2.table_name IS NULL;

おまけ

テーブル一覧を取得する

SHOW TABLES FROM 'DB名';

-- または

SELECT table_name, table_type, engine FROM information_schema.tables WHERE table_schema = 'DB名';

テーブルのカラム一覧を取得する

SHOW COLUMNS FROM 'テーブル名';

テーブル一覧とカラム一覧を取得する

USE information_schema;

SELECT table_name, column_name FROM columns WHERE table_schema = 'DB名';

BashでGitコマンドのタブ補完を有効にする

BashでGitコマンドのタブ補完を有効にする

git-completion.bashを導入する
git-completion.bash はGitコマンドをタブ補完してくれるスクリプト

導入方法

  1. git-completion.bash をダウンロードして適当な場所に配置する(今回はホームディレクトリ)
  2. ~/.bashrc に source $HOME/git-completion.bash の一行を加える
  3. source ~/.bashrc で再読み込みする

追記

もしかしたら、ダウンロードしなくてもインストールされているかもしれない

sudo find / -name git-completion.bash

jQueryでチェックボックスの全選択を実装する

  • 「全て選択」にチェックすると全ての項目にチェックが付与される
  • ひとつでもチェックを外すと、「全て選択」もチェックが外れる
  • また、全ての項目にチェックを付与すると「全て選択」がチェックされる

HTML

  <label for="allChecked">
    <input type="checkbox" name="allChecked" id="allChecked" value="1">
    <span>全て選択</span>
  </label>
  <div id="cities">
    <label><input type="checkbox" name="city[]" value="1"  /> 東京</label>
    <label><input type="checkbox" name="city[]" value="2"  /> 大阪</label>
    <label><input type="checkbox" name="city[]" value="3"  /> 名古屋</label>
    <label><input type="checkbox" name="city[]" value="4"  /> 福岡</label>
  </div>

JavaScript

  $(function() {
    // 「全て選択」のチェックボックスの制御
    $('#allChecked').click(function() {
      $("input[name='city[]']").prop('checked', this.checked);
    });

    // センターが選択された場合、「全て選択」を制御する
    $("input[name='city[]']").on('click', function() {
      controlCities();
    });

    function controlCities() {
      if ($('#cities :checked').length == $('#cities :input').length) {
        $('#allChecked').prop('checked', true);
      } else {
        $('#allChecked').prop('checked', false);
      }
    }

    controlCities();
  });

解説

全てのチェックボックスの個数と、チェックが付与されたチェックボックスの個数を比較して判断している

PHPで変数を利用して関数を実行する(可変関数)

PHPで変数を利用して関数を実行する(可変関数)

可変関数を利用する

<?php

  $function = 'floor'; // 切捨て
  echo($function(108.5) . PHP_EOL);

  $function = 'ceil'; // 切り下げ
  echo($function(108.5) . PHP_EOL);

/*
  実行結果
  108
  109
*/

?>