2012/07/23

JPOUG > SET EVENTS 20120721 で話してきました

Japan Oracle User Group 主催の JPOUG> SET EVENTS 20120721 に参加してきました。

自らの思いを共有したい人たちをスピーカーに迎え、セミナー、アンカンファレンス、ライトニングトーク、パネルディスカッションのスタイルで話していただきます。 鼓動を体感してください。

発表しました

今回は JPOUG のかたにお声がけいただき発表する場をいただきました。少しでも Oracle が絡めばなんでも良いと言うことでしたが、性能や運用の技術的な話は私の技量ではムリなので、すぐに浮かんだタイトルにちなんだ話をさせていただきました。

日々利用している SQL*Plus 関連の設定や CUI 三種の神器(vim,zsh,screen)について話す予定でした。しかし準備が足りず、いただいた 20分では後半の話題はまったく話せませんでした。さんざん煽っておいて期待されていた方には申し訳ありません。

反省点

  • 当日は余裕を持って。自宅で作業しているときには起きなかったのですが、MacBook Pro Retinaをスリープから復帰すると画面描画が激しく乱れて操作がまともに出来なくなりました。発表15分前に端末開いてその現象に遭遇し、慌ててOSを強制再起動したのでデモ用のVirtualBoxが起動しないのではとヒヤヒヤしました。
  • 画面出力のミラー設定は外部ディスプレイごとに。OSXの「環境設定>ディプレイ」を開くと接続したディスプレイの設定画面が出ますが、ウィンドウが近くで重なっていたのですぐに気づけませんでした(一般的なことなのかも知れませんが無知すぎました)
  • 時計を見ながら話すこと。当たり前すぎますがその当たり前のことができませんでした。早口にならない程度に、でも言いたいことは言う、とマイペースでやってしまいました。
このような発表は初めてでしたので、それに備えていたつもりでしたが、まったく足りませんでした。想定聴衆の CUI 習熟度がまったく読めず、資料による説明ではなくデモンストレーションに逃げる気でした。しかも当日はそこまで話せない始末。最悪です。正直言うと、あの不完全な内容で話さなくて良かったなと思っているところがあります。もしまた機会をいただけるようであれば挽回したいと思います。

発表準備を通して得たモノ

  • Keynoteの基本的な使い方がわかった。仕事でもプレゼン資料を作る機会は皆無なので今回は良い経験になりました。トランジションとかそのうち使ってみたいです。
  • Lionのフルスクリーンは発表で役立つ。普段ブラウザとかメーラの上に半透明のターミナルを重ねていることが多いので、それが出来ないフルクリーンには否定的でしたが、画面の切り替えがCtrl+数字で素早くできます。(Mission Controlを使った方が派手ですが)
  • VirtualBoxのCUIはかなり充実している。VirtualBoxにデモ環境として2ノードRACとXE(リカバリカタログ)/MySQL/PostgreSQL、Solaris11を構築するときにVBoxManageコマンドが大活躍でした。そしてcloneしていたけどあまり活用していなかったzsh-completionsに補完関数が存在していることに気づきました。 稼働中のVMもstartvmサブコマンドの候補に出るなど、コンテキスト補完の一部に不満な点があるので補完関数の学習におけるよい題材になりそうです。
  • VirtualBoxの共有フォルダ便利。普段使っているdotfilesはDropboxで管理していますが、そのディレクトリを共有フォルダにしてVMゲストにも同じように設定することで省力化。OSやバージョンごとの差異に気づいてフィードバック出来ました。多数のVMホストを作ることがあるならばopenldapを入れる日も近そう。
  • dnsmasq便利。公開されている構築手順に従ってデモ環境のRAC向けDNSとして別途VMを上げていましたが、ホストOSであるOSXに用意すれば良いことに気づきました。自宅のルータやNAS用に/etc/hostsを書いてましたが、homebrewで入れたdnsmasqに統一することにしました。

フィードバック

聴衆については、セッション概要で話すことを明記しておけば良い、と言うアドバイスをいただきました。当たり前のことですね。ギリギリまで決められなかったので思わせぶりな概要にしたことがまずかったです。しかしあの会場で「bash のここがちょっとアレだから zsh のこういうところがいいよね!」というネタで足を運んでいただけたかというと。。。でも vim と GNU Screen、それぞれ 2名の方から聴いてみたいと言っていただけましたので、次回こそは。(Oracleをテーマにシェルを語るのは難易度高いかも。。。)

打ち上げで @mutatsuさんに、私が発表中に「ホスト名かな?」と言っていた The Tom Kyte Blog のサンプルコードにある SQLPROMPT の「ops$」は OS 認証ユーザのことだよ、と教えていただきました。ありがとうございます!よく考えてみれば oracle ユーザによる「sqlplus / as sysdba」は OS認証でしたね。一般ユーザでは使った事が無いのでスッカリその認識を忘れていました。ひとつ賢くなりました。

(7/23 追記) @yoshidashingoさんに資料の誤りを指摘いただきました。ありがとうございます。8ページ目の SET SQLPROMPT での値の指定は=ではなく空白です。

誤 SQL> SET SQLPROMPT="_DATE _USER'@'_CONNECT_IDENTIFIER PRIVILEGE> "
正 SQL> SET SQLPROMPT "_DATE _USER'@'_CONNECT_IDENTIFIER PRIVILEGE> "
ほかにもいくつか誤字を修正したものをアップし直しました。ついでにページ幅の都合で資料中では省略表記していた login.sql の実際に使っている部分を gist に上げました。 これを適用するとこんな感じになります。
$ export NLS_DATE_FORMAT='YYYY-MM-DD HH24:MI:SS'
$ sqlplus scott/tiger@srv1
(2012-07-23 20:48:39) [node1]orcl_1/srv1 SCOTT> 
左から日時、ノード名、インスタンス名、サービス名、ユーザ名(、ユーザ権限)。接続先やユーザ権限によっては 50 文字を越えてしまって設定できない場合があるので、先に _PRIVILEGE の無いプロンプトを定義しています。

今回は説明できませんでしたが、SQLPATH環境変数に columns.sql と app_columns.sql と言うファイルを用意しています。その内容は、よく参照するディクショナリやビューの列幅の定義(COLUMN OBJECT_NAME FORMAT A30、みたいなやつ)を列挙したものです。前者は Oracle固有、後者は利用しているシステム固有、と言う風に使い分けています。

当日振り返り

今回のイベントは自分の発表の事でいっぱいでしたので、他の方のセッションにまったく目が向けれませんでした。Togetterや公開されている資料をよく読み返しておきます。

発表者特典?として参加させていただいた打ち上げはとても楽しめました。まさかのタイムアップした LT の続きや、小田さん PCの意外なデスクトップ画面、@meijik さんと @discus_hamburg さんと @s4r_agent さんの貴重なスリーショットなども拝見でき、たいへん貴重な時間を過ごせました。

おもえば、昨年このセミナーに参加させていただいてからから、いろいろつながりが広がったような気がします。

自分一人ではたいしたことは出来ませんが、今回のような集まりには積極的に参加してその熱気を分けてもらって、また可能であれば少しでも与えることも出来たらいいなと思いました。

0 件のコメント:

コメントを投稿