読者です 読者をやめる 読者になる 読者になる

log

日記です

変数展開できるだけのPHP SimpleTemplateEngine

が欲しくなって。
gist.github.com

ここ最近で買ってよかったと思うもの

ダウンジャケット!
少しいい値段のするダウンジャケットを買いました。
待ちゆく人を見てみると、カナダグース、モンクレール、ノースフェイスのダウンを着ている人をよく見るなーと思いながら何を買うかを悩む。。。カナダグース中古は狙い目だった。。

Cape Heightsのsummitというダウンを買いました。

地方から関東に出てきて5年。
いままでダウンジャケットを買ったことがなくて、コートやスタジャンで過ごしていました。
冬は本気で外いでたくないと思っていた私。

このダウンがあれば外が5度きっていても余裕っす…

この辺の贅沢はQOLが上がり、何年も使えるものなので多少お金出しても良いなーと思いますた。

3,360円でベンツAMG A 45乗ってきた

買うと660万円ぐらいで、まぁ買えないわけですが、、カレコのカーシェアリングで借りることができ、野暮用で車を使いたかったので短時間で借りてみました。
Aクラスとしては高いけど、AMGだと思えば安い?
歩いてセルリアンタワーまで行き、地下3Fにおいてあるベンツ氏を発見。
周りにはフェラーリアヴェンタドールロールスロイスが停まっていて、、ぼくの場違い感がハンパない!(写真撮りたかった)
お値段は約2時間半で3,360円でした。

乗ってみて

さすがのAMG・・・エキゾースト音がしびれます。純正とは思えない音量です。なんでこの音量で市販できるんだろ。サスペンションやトランスミッション、トラコンのモードが変更できるようなので、すべてスポーツ走行に振ってみました。
DCT(デュアルクラッチトランスミッション)の車に初めて乗ったんですが、すごく面白い。感覚はほぼMT車と同じで、シフトダウンのときアクセルを煽ってシフトチェンジされる感覚はバイクのオートシフターの様でした。

新宿の住宅街へ行ってきたので、、ほとんど楽しめてないけど、高速道路とか乗ったら楽しいんだろうなぁ。。。山手通りで軽くアクセル踏むと、シフトチェンジではアフターファイヤーしたりと音がスポーツカーや、と思いました。

写真

カレコで借りてきました
f:id:ariteku:20170121140802j:plain

前から
f:id:ariteku:20170121162240j:plain

後ろから
f:id:ariteku:20170121162040j:plain

斜め後ろから
f:id:ariteku:20170121162427j:plain

斜め前から
f:id:ariteku:20170121162717j:plain

ホイールでかい
f:id:ariteku:20170121162414j:plain

運転席
f:id:ariteku:20170121154404j:plain

シート
f:id:ariteku:20170121162329j:plain

後部座席から見た感じ
f:id:ariteku:20170121162340j:plain

次は・・・

次はWRX STIレヴォーグ借りて乗ってみようと思います。WRX STIは380万か・・・。
レクサスのLS460とか試乗してみたいけど、、20代後半の小僧を相手してくれるのか謎。気まずいし行けないな。
カーシェアで面白い車借りれるのいいなー。Anycaに手を出してみたいけど、人から借りるのってなんかめんどくさい。心理的ハードルがある。。

USキー配列

ErgoDoxが欲しくなっちゃっとのと、気分転換のためにUSキー配列のHHKBを使ってみた。
すごく使いやすい…
こんな簡単にUSキー配列に移行できるならもっと早くからやっておけばよかった…

サジェストでレーベンシュタイン距離を使ってみた

マッチ度が高い候補が上位に来てくれるので、ユーザービリティ◎

  • 部分一致で候補を絞り
  • 候補と入力値でレーベンシュタイン距離を図り
  • 距離が近い順にソートする

部分一致でなく、トップの上位N件を表示、みたいなのもありかもですが、フィルタの条件に部分一致を使い、候補の重み付けにレーベンシュタイン距離を使う、的な感じにしました。始めにフィルタしないと対象数多いですし><

levenshtein.html · GitHub

GROUP BY後、最小・最大の値を抽出する

地味に調べたのでメモ。

こたえ
SELECT
  m1.item_id,
  m1.price,
  m1.sale_price
FROM
  items m1,
  items m2
GROUP BY
  m1.item_id, m1.price, m1.sale_price, m2.category_id
HAVING
  MIN(m2.sale_price) = m1.sale_price;
サンプルテーブル作成
CREATE TABLE `items` (
  `category_id` int(11) DEFAULT NULL,
  `item_id` int(11) DEFAULT NULL,
  `price` double DEFAULT NULL,
  `sale_price` double DEFAULT NULL
);

INSERT INTO items VALUES(1, 1, 300, 150);
INSERT INTO items VALUES(1, 2, 200, 100);
INSERT INTO items VALUES(1, 3, 150, 110);
INSERT INTO items VALUES(2, 4, 1300, 1150);
INSERT INTO items VALUES(2, 5, 1200, 1100);
INSERT INTO items VALUES(2, 6, 1150, 1110);
サンプルテーブル確認
mysql> SELECT * FROM items;
+-------------+---------+-------+------------+
| category_id | item_id | price | sale_price |
+-------------+---------+-------+------------+
|           1 |       1 |   300 |        150 |
|           1 |       2 |   200 |        100 |
|           1 |       3 |   150 |        110 |
|           2 |       4 |  1300 |       1150 |
|           2 |       5 |  1200 |       1100 |
|           2 |       6 |  1150 |       1110 |
+-------------+---------+-------+------------+
6 rows in set (0.00 sec)
実行
mysql> SELECT
    ->   m1.item_id,
    ->   m1.price,
    ->   m1.sale_price
    -> FROM
    ->   items m1,
    ->   items m2
    -> GROUP BY
    ->   m1.item_id, m1.price, m1.sale_price, m2.category_id
    -> HAVING
    ->   MIN(m2.sale_price) = m1.sale_price;
+---------+-------+------------+
| item_id | price | sale_price |
+---------+-------+------------+
|       2 |   200 |        100 |
|       5 |  1200 |       1100 |
+---------+-------+------------+
2 rows in set (0.00 sec)

追記

うーん、、、なんかデータが多いと微妙な気がしたのでプログラム側で集計するようにしました。MySQLにもRANK関数があればいいんですけどねぇ

料理

f:id:ariteku:20160910223954j:plain
最近料理が捗ってる

久々にいい時間を過ごした気がする

職場にも弁当持参が増えた
次は何を作ろうかなぁ