@kyanny's blog

My thoughts, my life. Views/opinions are my own.

最近読んだもの

CSS再入門 - できる!中央寄せ 1 | CodeGrid

勉強になった。理屈から説明してあってとてもよい。次回も楽しみ。

A Million Hello Worlds - steps to phantasien

よい言語化。だからおれはブログに引きこもることにしたのだ。ここは目立たない路地裏でめったに訪ねる人もやってこないけど、自分の居場所としては完璧だ。

余談だが、今日久しぶりに渋谷の啓文堂書店に立ち寄り技術者コーナーを眺めたら、陳列された本の山から意識の高さみたいなものを感じて疲れきってしまった。人ごみやゴシップだけでなく、こういう場所も適度に避けたほうが良い。

新井俊一のソフトウェアビジネスブログ: 流行のIT技術を追うのをやめたらプログラマとして成長した話

主旨はわかるが賛成しかねる部分もある。スーパープログラマはいるし、10年の技術だけで職に就けるだろうか。そもそも解決したい問題がないプログラマもいる。

Bringing the best of Bash scripting to Ruby (by @radekpazdera) docopt: A brief introduction (by @radekpazdera)

Docopt はすごく良さそう。これは賢いアイデア。確かにそのほうが便利だし、 optparse で工夫して Usage を整形するのはナンセンスだ。これ標準語ライブラリになったら最高なんだけどな。

カルチャーについて

とある有名なスタートアップ企業の CEO が、自社のカルチャーを社員に周知するために書き記した小冊子を見せてもらう機会があった。

  • その企業のパブリックイメージ通りのキラキラした内容で、同じものを見た人は「女子力が高い」と評していた
    • 実際かわいらしい装丁だったり、女性的な文章だったりするが、たぶんそういうことではないのだろう
  • キラキラしてて羨ましいと思う反面、自分は馴染めないだろうなとも思った
    • 自分はそういうキラキラした集団への嫉妬心を怒りのエネルギーに変えて人生を切り拓いてきたので、いまさら迎合など死んでもできない。そんなことをしたら過去の自分が救われない
  • カルチャー == 人の思想や人格で、要するに人そのものなので、結局はその人と合うかどうかだよなぁ、と思った
    • しかしどんなカリスマでも人ひとりの影響力には限界があるのでこうしてカルチャーを形に残して伝承しようとするのだろう

図解入門よくわかる最新Oracleデータベースの基本と仕組み[第4版]

Oracle Database について知りたかったので他の本とあわせて買った。こちらのほうが易しそう(悪くいえば素人っぽい)で、 Oracle 特有の概念だけさらっと読んでおさえれば十分かなと思って読み始めたら意外に読みやすくためになって七割方読んでしまった。 Oracle Database のみならず、 Oracle Database を取り巻く Oracle 社製品についても触れられていて、ためになった。扱う領域が広すぎるせいで多少説明不足気味に感じられたところもあったが、仕方ないと思う。

RDBMS や SQL については知っていて他の RDBMS 製品にも慣れているが、 Oracle Database という製品のことは知らない人に向いている。ただし会社の机の上に置いておくにはちょっと表紙が初心者向けっぽすぎて若干恥ずかしいかもしれないので家でこっそり読むのが良い。読むべき (MUST) 章は 1,3,4,6 で、読むとよい (MAY) 章は 5, 7, 9, 10, 11, 12, 13, 14, 15, 16。

全体的に「Oracle 社すげえな...」と思った。あと名前だけ見かけていた PL/SQL の説明を読んで「SQL を手続き型言語として拡張したものである」と書いてあって戦慄を覚えた(これまで読んできた SQL を多少まともに取り扱う本や文献では SQL がいかに手続きを排して設計されているか(それが良しとされているか)が嫌というほど語られていたので、こりゃあ SQL 作った偉い人たち涙目か怒り心頭のどっちかだわ...と思った)

  • インスタンス =~ mysqld
  • データベース =~ /var/lib/mysql 以下のファイル群(MySQL におけるネームスペース的な database とは全く異なる)
  • 表領域 (tablespace) は OS のファイルシステム上の物理ファイルに対する論理的なモノ
  • スキーマも論理的なモノだが表領域とは直交する概念(無関係ではないが包含関係・親子関係にはない)
  • スキーマはユーザーごとに一つ作られるので実質ユーザー == スキーマ
  • Oracle の世界ではテーブルでもインデックスでも全て「オブジェクト」と呼ぶ
  • オブジェクトは必ずスキーマに属する(オブジェクトには必ずオーナーであるユーザーがいる)
  • マテリアライズドビュー (materialized view) は「実体を持ったビュー / 実体化されたビュー」
  • SID == System Identifier
  • グローバルデータベース名と SID の関係(要暗記)
  • CLI は sqlplus

let の書式の覚え方

(let ((a "A"))
  (print a))

いきなりこれをみると「なぜ (a "A") ではなく ((a "A")) なのか」が理解できず、混乱する。以下のように考えるとすっきり覚えられる。

;; 一番シンプルな形はこれ。 a は nil
(let (a)
  (print a))

;; a の初期値を与えるために (a "初期値") という書式が必要
(let ((a "A"))
  (print a))

;; 初期値なしならこう書ける。 a, b ともに nil
(let (a b)
  (print (list a b)))

;; 初期値ありだとそれぞれ (a "初期値") (b "初期値") と書く
(let ((a "A")
      (b "B"))
  (print (list a b)))

;; 初期値ありと初期値なしが混ざってもよい
(let ((a "A") b)
  (print (list a b)))

最近読んだもの

CircleCI Status - DB performance issue

先週火曜の CircleCI の障害報告。

  • GitHub からの Webhook が止まる→再開、で一気に来てビルドキューが溜まりすぎて DB ロックが多発したのが原因
  • 動作中のアプリケーションコードを変更→ライブコンパイルしてパッチ当てとかいろいろ手を尽くしたがダメで、結局 DB を強いハードウェアに載せ替えた。データのシンクに時間がかかった