やるしかなっちゃん

やるしかない!

lessのcalcで異なる単位同士の計算をすると値がおかしくなる

題名の通りのlessのcalcにとんでもない落とし穴があって今日見事にハマってしまった。
下のように%とpxの計算を書く。

width: calc(100% - 90px);

これをCSSコンパイルすると100% - 90%になる(;´Д`)(;´Д`)

width: calc(10%);

どうやらコレは有名な不具合らしく解決策としては以下のようにエスケープすれば良いらしい。

width: calc(~"100% - 90px");

Facebookのアクセストークンをlocalhostで取得する方法

開発者登録の時にアプリドメインを指定するとそのドメインが認証の対象になるので、そのドメインならアクセストークンの取得ができるみたい

でもこのアプリドメインにはlocalhostを指定できないのでこれは困ったと思ったら簡単に解決できた

開発者画面の設定 -> 詳細設定 -> クライアントOautn設定から有効なOauthリダイレクトURLにlocalhostのURLを指定すればよいだけだった

f:id:k213:20160426005426p:plain

↑ここの場所ね

curlでGET/POST/PUT/DELETE

最近wgetからcurlに改宗した
取り敢えずGET/POST/PUT/DELETEのリクエストを投げられたら勝ちだと思う

GETはcurlコマンドの後にURLでOK

$ curl http://www.example.com/

他のメソッドは-Xオプションの後にメソッド名を書けばOK

$ curl -X POST http://www.example.com/
$ curl -X PUT http://www.example.com/
$ curl -X DELETE http://www.example.com/

POSTでデータを送信するには-dオプションの後に書けばOK
ファイルデータの場合にはファイル名の前に@を付けるだけ

$ curl -X POST -d "hoge=0&fuga=1" http://www.example.com/
$ curl -X POST -d @hoge.json http://www.example.com/

完全勝利してしまった

行持ち⇔列持ち

こんなデータがあるとする 。

ID NAME OPTION
001 aaa x
y
002 bbb
003 ccc x
y
z

この時、列持ちテーブルは次のようになる。

ID NAME OPTION1 OPTION2 OPTION3
001 aaa x y NULL
002 bbb NULL NULL NULL
003 ccc x y z

このテーブルに対して次のSQL文を実行すると行持ちテーブルに変換できる。

SELECT ID, 1 AS OPTION_ID, NAME,  OPTION1
FROM TABLE_NAME
WHERE OPTION1 IS NOT NULL
UNION
SELECT ID, 2 AS OPTION_ID, NAME,  OPTION2
FROM TABLE_NAME
WHERE OPTION2 IS NOT NULL
UNION
SELECT ID, 3 AS OPTION_ID, NAME,  OPTION3
FROM TABLE_NAME
WHERE OPTION3 IS NOT NULL

このSQL文によってできる行持ちテーブルは次の様になる。

ID OPTION_ID NAME OPTION
001 1 aaa x
001 2 aaa y
003 1 ccc x
003 2 ccc y
003 3 ccc z

この行持ちテーブルを列持ちテーブルに変換するSQL文はこんな感じ。

SELECT ID,
       MAX(NAME) AS NAME,
       MAX(CASE WHEN OPTION_ID = 1 THEN OPTION ELSE NULL END) AS OPTION1,
       MAX(CASE WHEN OPTION_ID = 2 THEN OPTION ELSE NULL END) AS OPTION2,
       MAX(CASE WHEN OPTION_ID = 3 THEN OPTION ELSE NULL END) AS OPTION3
FROM TABLE_NAME
GROUP BY ID

IDでグループ化しているので無理やり集計関数を使わないといけない当たりがちょっと気持ち悪いけどしょうがない。