Category prog.

ビューって何。つまり、使うと何が嬉しいのかよくわからない。パフォーマンスのために云々っぽいけど、実際どういうケースで使うんだろう。


最近分かったこと。というか教えてもらったこと。

カラムに配列 (のようなもの) を突っ込みたいときは、配列の要素をテーブルにして、元の行の id とデータを複数突っ込むらしい。

/* この例だと当たり前な感じがするなぁ。 */
CREATE TABLE entries (
id INT PRIMARY KEY,
body TEXT,
...
);
CREATE TABLE comments (
id INT PRIMARY KEY,
entry_id INT,
body TEXT
);

多対多な関係の場合は仲介テーブルを作るみたい。

CREATE TABLE ideas (
id INT PRIMARY KEY,
body TEXT
);
CREATE TABLE users (
id INT PRIMARY_KEY,
name VARCHAR(60)
);
CREATE TABLE votes (
id INT PRIMARY KEY,
idea_id INT,
user_id INT
);
  1. トップ
  2. sql
  3. SQL わかんね
  1. トップ
  2. prog
  3. SQL わかんね

いろんなところでカリー化と普通に言われて、カリー化って何だよって思っていたけど、ふとした拍子に理解した (と思う)

引数を一個とって関数を返す関数をカリー化された関数というらしい。なんか言葉にするとそこらの説明と大して変わらないなぁ。

檜山正幸のキマイラ飼育記 - JavaScriptでカリー化 の最初に「カリー化ってなに?」って書いてあるけど、今はこれが一番わかりやすい例だと思える。前読んだときはよくわからなかった。2引数の関数f(x, y)に対して、「gがfのカリー化」だとは、f(x, y) = g(x)(y) が常に成立すること。ちなみに「なに?」の部分以外はわからない (読んでもいない)

モナドもわからない。ほっといてもそのうち分かるんだろうな

  1. トップ
  2. prog
  3. カリー化をふと理解した?

今日の講義でポインタの説明があって、その中で先生がポインタを理解するまでこんなに苦労した!みたいな話を聞いた。

それを聞いたときから、自分はいつポインタっていう概念を理解したんだろうって考えているんだけど、どうも分からない。

C/C++ とかを殆ど書いたことがなかったので、実際にポインタに触れる機会は今までなかったといってもいいと思う。でもいつの間にかどういうものかっていうことは理解していて、なんか不思議な感じがする。

いろいろ過程を辿ってみたんだけど、もしかしたら Ruby 触り始めてからかもしれないなぁと思った。Ruby の破壊的メソッドの理解の過程で、「変数」に対する考え方が変わった (箱という理解から、名前・ラベルという理解へ) とき、ポインタを理解したのかもしれない。メソッドに渡される引数が参照で渡される云々の理解かな。あとは拡張ライブラリの作り方とかでかなぁ。やっぱり正確なところはわからない。


で、先生の場合「ずっとわかんなかったんだけど、ある日起きたら理解していた」とか言っていて、ねー……あるあるwwとか思った。ポインタとかに限らず、なんか寝て起きたら視点が変わってて、あーなんだ、もっと簡単じゃーんみたいな。あれって結構感動的というか、好きなんだけど滅多にない。

時々すごく集中してプログラムを書くことがあって (滅多にない)、そういうときはもうずっと頭の中にある完成形まで突っ走ろうとする (寝ない) んだけど、アルゴリズムとか苦手だからちょっと難しくなるとすぐ躓く。それでもう諦めて、いいやーって寝て、起きるとなぜか思いついてコードが書けるっていう不思議現象。面白い。

  1. トップ
  2. prog
  3. いつポインタを理解したんだろう