MySQLで月末を求める

LAST_DAYを使えばいい

mysql> select LAST_DAY('2015-08-23');
+------------------------+
| LAST_DAY('2015-08-23') |
+------------------------+
| 2015-08-31             |
+------------------------+
1 row in set (0.00 sec)

MySQLで無ければINSERTあればUPDATEをするREPLACEコマンド

REPLACE INTO profile (user_id,key,value) VALUES (1, '体重', '1t');な感じで一行で無ければINSERTあればUPDATEをすることができる。これをしなければそれを自分で実装しなければいけない。私はバカなのでアプリケーション側で一旦SELECTをしてから次発行するSQLをif文で振り分けることしか思いつかない。

試しにこのようなSQLを実行してみる

REPLACE INTO profile (`user_id`, `key`, `value`) VALUES (1, '体重', '1t');
REPLACE INTO profile (`user_id`, `key`, `value`) VALUES (1, '年齢', '1000歳');
REPLACE INTO profile (`user_id`, `key`, `value`) VALUES (1, '彼女', 'なし');

結果はちゃんとこうなった

mysql> select * from profile;
+---------+--------+--------+
| user_id | key    | value  |
+---------+--------+--------+
|       1 | 体重   | 1t     |
|       1 | 年齢   | 100歳  |
|       1 | 身長   | 20m    |
|       2 | 体重   | 40kg   |
|       2 | 年齢   | 16歳   |
|       2 | 身長   | 150cm  |
|       3 | 体重   | 40kg   |
|       3 | 年齢   | 12歳   |
|       3 | 身長   | 145m   |
+---------+--------+--------+
9 rows in set (0.00 sec)
mysql> REPLACE INTO profile (`user_id`, `key`, `value`) VALUES (1, '体重', '1t');
Query OK, 1 row affected (0.01 sec)
mysql> REPLACE INTO profile (`user_id`, `key`, `value`) VALUES (1, '年齢', '1000歳');
Query OK, 2 rows affected (0.01 sec)
mysql> REPLACE INTO profile (`user_id`, `key`, `value`) VALUES (1, '彼女', 'なし');
Query OK, 1 row affected (0.01 sec)
mysql> select * from profile;
+---------+--------+---------+
| user_id | key    | value   |
+---------+--------+---------+
|       1 | 体重   | 1t      |
|       1 | 年齢   | 1000歳  |
|       1 | 彼女   | なし    |
|       1 | 身長   | 20m     |
|       2 | 体重   | 40kg    |
|       2 | 年齢   | 16歳    |
|       2 | 身長   | 150cm   |
|       3 | 体重   | 40kg    |
|       3 | 年齢   | 12歳    |
|       3 | 身長   | 145m    |
+---------+--------+---------+
10 rows in set (0.01 sec)

JavaScriptでremoveChildしたElementはどうなっているのか

JavaScriptelement.removeChild()ってのがある。element配下の消したい要素childを引数に渡せば、そのelementからchildが消えるってことで、よくよく使うと思う。ただこれ見た目消えてるだけでchildオブジェクトが削除されているわけではないようだ。

<!DOCTYPE html>
<html>
<head>
    <title>test</title>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1">
  </head>
<body>
<p id="hoge1">show</p>
<p id="hoge2">HOGE</p>
<p id="hoge3">toire</p>
</body>
</html>

このHTMLで下記を実行してもちゃんとinnerHTMLを得ることができる

var hogeElement = document.getElementById('hoge2');
hogeElement.parentNode.removeChild(hogeElement);
console.log(hogeElement.innerHTML);

removeChildしたオブジェクトが消えていると思ってコードを書いてバグになったので改めて意識した

yumのキャッシュを削除する

yumのキャッシュを削除するにはこれ

yum clean all

こんなものどこで使うんだと思っていたら、最近になってDockerコンテナをビルドする時にサイズを抑えるために使うという。昔必要なのだろうかと思っていたものがここで役に立つとは思わなかった。

MySQLで &amp;quot;Table has no partition for value from column_list&amp;quot; って言われる時

こういうパーテションが設定されている状態で

CREATE TABLE `user_test` (
`username` varchar(20) NOT NULL,
`password` varchar(32) NOT NULL,
PRIMARY KEY (`username`)
) PARTITION BY RANGE COLUMNS (`username`) (
PARTITION a VALUES LESS THAN ('b'),
PARTITION b VALUES LESS THAN ('c'),
PARTITION c VALUES LESS THAN ('d')
);

こういうSQLを発行するとこういうエラーになる

mysql> INSERT INTO user_test (`username`, `password`) VALUES ('hoge', MD5('hoge'));
ERROR 1526 (HY000): Table has no partition for value from column_list

MAXVALUE指定しておけばこういうことはないけど、それはちょっと私は微妙だなと思っていて、想定しているパターンがあるなら全部指定するほうがいいんじゃないかと思う。美少女の画像を保存する時にその他ってフォルダがあると便利で何でも入れちゃうけど、MySQLのパーテションを設定する場面では分散させたい意図があるだろうからそれではダメなんじゃないかなってことだな。

CSSでラジオボタンをデザインする

こういう感じでいくつでも追加できるぞ

<div class="my-radio">
<label class="my-radio-buttons">
<input type="radio" name="I'm" value="devil">
<span class="my-radio-buttons-default">悪魔</span>
</label>
<label class="my-radio-buttons">
<input type="radio" name="I'm" value="angel">
<span class="my-radio-buttons-default">天使</span>
</label>
<label class="my-radio-buttons">
<input type="radio" name="I'm" value="science">
<span class="my-radio-buttons-default">科学</span>
</label>
</div>

CSSはこんな感じ

.my-radio-buttons {
cursor: pointer;
}
.my-radio-buttons > span {
display: block;
float: left;
padding: 5px;
background-color: #ddd;
}
.my-radio input[type="radio"] {
display: none;
}
.my-radio-buttons-default {
background-color: #ddd;
color: #222;
}
.my-radio .my-radio-buttons input[type="radio"]:checked + .my-radio-buttons-default {
background-color: #000;
color: #fff;
}

我ながらいいアイディアだと思った