2013年9月30日月曜日

スキーマとシノニムについて

スキーマとシノニムの違いがいまいちよくわからない。

シノニムを作成することで、別のユーザーが作ったテーブルを参照できるらしいが、解説を読んでいくうちに、スキーマとシノニムが頭のなかでごっちゃになってしまった。改めて調べ直す。

シノニムとは
「テーブルの別名」

スキーマとは
「テーブルの管理者」

説明を端折り過ぎな上に誤解を生む表現だが、大体はこの認識で問題無い。
通常、他ユーザーが管理するテーブルを使うときは「スキーマ名.テーブル名」でテーブルを指定をしなければいけない。ここで

「create synonym シノニム名 for テーブル名」

と打つことで

「テーブルの管理者.テーブル名」

と指定したところがシンプルに

「シノニム名」

と指定ができる。さらにシノニムは「使用者」が作成するか「全体のデータベース管理者」が作成するかで「効果範囲」が変わる。データベース管理者がシノニムを作成する時に

「create public synonym シノニム名 for テーブル名」

と「public」を付加することにより、そのデータベースにログインできるユーザー全体に、作成したシノニムの使用を許可することができる。

と、とりあえずこういった認識で概要を把握した。細かいところは問題集を解いて詰めようかなぁ、と思う。

2013年9月29日日曜日

COALESCE関数について

オラクルを勉強していると、COALESCE関数というものが出てくる。
この関数はMySQLにも使えるようで、サーバーサイドのエンジニアにはおなじみなのだろうが、そうでないプログラマにとっては、この名前と使い道に、ちょっと戸惑う。

SQL関数coalesceの使い方と読み方
http://doruby.kbmj.com/akio0911_on_rails/20091019/SQL_coalesce_

coalesce関数とは、頭の引数から見ていき、1つ目の引数がNULLだった場合は2つ目の引数を、2つ目の引数がNULLだった場合は3つ目の引数を・・・と繰り返し、NULLでない引数を返す、という関数だ。

初見では、使い道がすぐには思いつかなかった。NVLやNVL2で十分だと思うが・・・と思ってもういっちょ調べてみた。

MYSQLの関数 COALESCE - Qiita [キータ]
http://qiita.com/mikakane/items/1e45c2a798d0c7edffda

このサイトによると、DBに複数の住所を記載したカラムがあった場合、これを使って順に参照をしていき、何もなかった場合は最後の引数にテキストを載せる、という使い方をしていた。ううーん、なるほど。

2013年9月28日土曜日

order byに単一行関数を使った例

単一行関数は「select where order by」などで使うことが可能だが、order byで使う単一行関数とは、一体どんなものなんだろうか、ということで調べてみた。

SELECT 文の活用(関数) - オラクル・Oracle SQL 入門
http://www.shift-the-oracle.com/sql/function.html

ここの例では、decode、つまりcase文を例にして単一行関数をorder by句に使っている。文字列はorder byで並び替えても、どのように並び替わるのかは想像がつきづらい。そこでdecode関数を使うことで、並び替えを制御できるらしい。

なるほど・・・勉強になった。

2013年9月26日木曜日

中毒にならない方法

世の中には「中毒」になる罠がたくさんあります。Youtubeやネットゲームはその代表格で、TwitterやWikipediaも「中毒」になる要素を十分に秘めてます。

で、そういった中毒に振り回された結果、学生時代は色々と影響があったわけで・・・。その反省を生かし、「中毒にならない方法」を探してきました。

その方法は「飽きる理由」を探すことです。

まず前提として、これら中毒になるネタは「人生に何も役に立たない」という自覚を持つこと。わかっているとは思っていても、改めてその考え方を持つこと。

その上で中毒対象に飽きる理由を探します。

ゲームなら「ゲームオーバー」になった瞬間に「やり直すのが面倒臭い」と思うこと。テレビならいい場面でCMに入った瞬間に「演出方法に冷める」こと。Youtubeなら、動画を見終えた瞬間に「あーくだらなかったー」と思うこと。

中毒対象を直接攻めるのではなく、間接的に攻めることがいいかと思います。中毒というのは面白さと新鮮さの塊なので、直接「飽きる理由」を探してもなかなか見つからないわけです。だから、例えばゲームなら、いっそのことデータを消せば「やり直すのが面倒くさい」が強力に出るかと思います。

で、その時間を別のことに費やせば何ができたか、を考えること。

それを何度も繰り返すと、中毒になりそうな物事に不思議と興味がなくなります。

で、今度は暇になった時間をどうするか、になるわけですが、とにかく考えては何かにアウトプットすることがいいと思います。何か考えて生産的なことをしないと、また中毒生活逆戻りなので、とにかく何か行動に移すことがいいかと思います。方法はなんでもいいです。

そうなれば、中毒以前よりも多少なりいい方向に進むかと思います。

2013年9月25日水曜日

ブログを続けるために行ってること

1.記事を書く際に無駄なことはしない
ブロガーの職業の大半はライターではありませんし、プロのブロガーでもありません。作家でもなければ、国語の教師でもないわけです。またブログの更新は義務でも無ければお金を稼ぐわけでもありません。だから「何度も書きなおして記事の質を上げる」なんて必要ありません。
デザイン、ラベルの貼り付け、画像の微調整、文の推敲などは、更新を続けるためには無駄な要素だと思ってます。「質の高いブログ」を目指すよりも先に「続けられるブログ」を目指すべきです。その後に質の向上を望んでも遅くはありません。

2.記事は一度で書ききる。
「書きたい」と思った瞬間が一番の「書き時」です。一度書いたら、モチベーションの高いうちに最後まで書ききりましょう。
一時間でも間を置いてしまって書き直そうとすると「あれあんまりこの記事よくない・・・?」「やっぱり別の記事のほうがいい気が・・・」「出だしと終わりがよくないような・・・」と考えてしまいがちです。そんなことを考えるぐらいなら、ぱっぱと今の記事を書き終えて次の記事を考えるほうがいいです。

3.一日に何度も更新するのではなく、毎日更新する。
はじめのうちはたくさん記事を書いてたくさん公開したい衝動に駆られますが、一日に何度も更新するよりも、公開日を設定して毎日更新したほうが価値があります。「書きたい」とおもった日に何日分も書きためて、公開日を調整しましょう。

4.短く伝わる文章で。
シンプルでわかりやすい文書を書くことを心がければ、早く記事が書き終わりますし、読者にとってもわかりやすい記事が生まれます。その心がけを続ければ、文書作成にも「テンポ」が生まれて、より高い質とスピードの向上が望めます。
ブログを見に来る人の大半が、グーグルを経由します。グーグルを経由するということは何かしらの疑問や興味を「キーワード」として書きなおして来訪するわけです。その需要に答えるような文章は、長くて詳しいものよりも、短くてわかりやすい文章が望まれます。とにかく簡潔に書くように心がけましょう。




2013年9月24日火曜日

ROWNUM擬似列について

さてさて、相変わらず「オラクルブロンズ11g SQL基礎」の試験勉強中です。今回はROWNUM擬似列について。使い道は2つあります。

1.FROM文に使う場合
読み出された行に昇順の行番号を振ります。例えば
SELECT ROWNUM ,〜〜,〜〜 FROM 〜〜
と書けば、取得した表の一列目に番号を振ってくれます。

2.WHERE文に使う場合
取得する行数を制限します。例えば
SELECT 〜〜,〜〜 FROM 〜〜 WHERE ROWNUM <= 10
と書けば、たとえ検索結果が1000件出ようが、10行まで表示してくれます。

オラクルでは「LIMIT」の代わりに「ROWNUM」を使うようです。MySQL使ってた人からすると、この書き方はなんだか気持ち悪さを感じてしまう・・・。

2013年9月23日月曜日

iPhone5を買った後のiPhone4(4s)の使い道

旧iPhoneは初期化し3G、Bluetooth等不必要な通信はすべてカット。常駐アプリもすべて削除。そしてAppStoreから「無料で音楽聴き放題!! Music Tubee」をダウンロードする。

無料で音楽聴き放題!! Music Tubee
https://itunes.apple.com/jp/app/wu-liaode-yin-le-tingki-fang/id607974779?mt=8

これに、某電気屋で投げ売りしていたBOSEのサウンドドックを買い、旧iPhoneを刺す。これでランダム再生にすれば、人気の音楽しか流れないラジオの完成です。しかもPV付きで高音質。便利な時代だな〜。

ネットで「古いiPhoneの使い道」を調べると、オーディオ専用機器として使う人が多いようだ。今回紹介したラジオは一例で、これだけアプリがあると、まだまだ有効な使い道がありそう。

こういう古いiPhoneの使い道まとめたら面白いかもしれないので、ちょっと時間があるときにここに書いてみようかと思う。