のえら

技術備忘とかメモとか.間違いはつっこんでいただきたい所存.アフィリエイトはやっていません.

link_to の中に改行を含みたい

その1:
link_to にブロックを渡す

= link_to hoges_path, class: "foo" do
  リンクテキスト一行目
  %br リンクテキスト二行目

その2:
リンクするテキストにタグを含んでエスケープする

= link_to raw("リンクテキスト一行目<br/>リンクテキスト二行目"), hoges_path, class: "foo"
/ html_safe は nil だと例外が発生するので raw を使用する

Handsontable のサンプルを動かそうとしたらエラーになった話

Struts2のプロジェクトで、Handsontableを使用するからこのサンプル見てねー、と渡されたので動作確認したらエラーがでた。

Handsontable is not constructor

えー、と思いつつ色々ググってみたけど、決定的なのはなく。
ふと、バージョンのせいでは?と思ったら案の定だった。
サンプルで使用しているバージョンを 0.11.4 から 0.13.0 にしたら解決。
とんだトラップの仕掛けられたサンプルを渡されるとは。。

まったく同じエラーではないけど、以下が参考になった
http://stackoverflow.com/questions/20577570/meteor-error-handsontable-not-defined

hamlのシンタックスエラー

少し前からhamlを触るようになったけど、初めてだからちょっと書いてはエラー、ちょっと直してはエラー、で最近ようやく構文にも慣れてきた。

で、初めて出たエラーがこれ。

syntax error, unexpected keyword_ensure, expecting keyword_end

閉じタグとかないよなぁ、と思っていたらインデントが間違っていたという。

%ul
  - hoges.each do |h|
  %li h.name

liのインデントが足りなくて、怒られていた。

bundle exec rails を実行したときに怒られた話

ssh で本番環境に接続したあと、rails コンソールを起動しようとしたら以下のエラーが出て怒られた。

Could not locate Gemfile

本番環境だったので、エラーメッセージが出ただけでテンパる・・・慌ててググったら検索結果で気がついた。
実行する階層を間違えていただけっていうね。。
railsアプリのある階層に移動して実行したら解決。

ウォンバットさんたちにハマった影響で多摩動物公園に行ってきた話

2014年9月頃のお話。


ウォンバットさんにハマった影響で、ウォンバットについて色々調べているうちに実物を見たくなり、ネットで調べてみたらいくつかの動物園にいるようだったので、割と近い『多摩動物公園』に行くことを決意。
渋谷乗り換えで行くのがよさそうだったため、ついでにアドアーズ渋谷店に寄ってカモノハシさんをGETした。


せっかくなのでと、笹野のリュックに格納して謎のカモノハシさんPRを行う。
「僕もウォンさんに会いに行くんだなぁ!」


多摩動物公園でぶらぶら。結構坂が多いので園内のバスを使うのがよさそう。


ウォンバットのチューバッカさんがいた!が、微動だにせず。。どうやら結構な年らしく、ほとんど動かないとのこと。残念だけども、それでも可愛いのはウォンバットだからか。。
f:id:noterr0001:20151031210105j:plain


園内にコアラもいたので見に行く。見た目がまんまぬいぐるみみたいでびっくりしたけど、それよりご飯のユーカリが置いてあったその横で寝てたw食べながら寝るコアラ可愛すぎか。
f:id:noterr0001:20151031210127j:plain


館内の看板にあったコアラの説明にウォンバットがいたw
f:id:noterr0001:20151031210338j:plain


休憩所ではコアラのソフトクリームがあった。可愛い。
f:id:noterr0001:20151031210254j:plain


休憩所にいたカンガルーのオブジェと記念撮影。ここでもカモノハシさんPRを行う。
f:id:noterr0001:20151031210230j:plain


鷹とか虎とか梟とか・・・可愛すぎか。
f:id:noterr0001:20151031210427j:plain
f:id:noterr0001:20151031210436j:plain
f:id:noterr0001:20151031210449j:plain


また春先に行こうかと思っていたら、11月に亡くなったとお知らせが。。衝撃過ぎる。。お悔やみ申し上げます。www.tokyo-zoo.net

ウォンバットさんたちグッズを妄想する:その3

f:id:noterr0001:20150817223421j:plain
なんとなく思いついたのでメモがてら。下書きすら消していないやる気のなさがうかがえるネタ。

たぶんそのうち自分で作りだすであろう、ウォンバットさんたちモチーフのエプロン。
コアラさんの胸のふさふさがポケットになっているのがポイント。


右下にこっそりメッシュスポンジのキウイさんがいるんだけど敢えて触れない。。

OracleでSpoolしたときに余計な改行が出力される

Oracleのレコードをcsvファイルに出力したとき、行と行の間になぜか余計な改行が出力されてしまうので原因と回避方法を調査した。

環境

サーバー:Windows Server 2005
DB:Oracle 8i
出力方法:SQL*Plus の spool

現象

spoolを使用してcsvファイルを出力したときに、行と行の間に余計な空白行が出力されていることがあった。
例)
こういう形式で出力されるはず

"hoge","foo","ba
r"
"hoge2","foo2","bar"

が、以下のような出力になっていた。

"hoge","foo","ba
r"
←ここが空白行
"hoge2","foo2","bar"

レコードをいじって発生するデータを確認したところ、出力対象のカラムいずれかに改行コード(LFまたはCRLF)が含まれていると上記のように空白行が出力されることが判明。
改行コードがCRの場合は発生しなかったため、LFを含んでいると発生する様子。
Stirling を使用して出力したcsvファイルを確認してみたところ、LFがCR+LFに変換されて出力されていることがわかった。これ自体はOSに合わせてSQL*Plusが変換してるんだろうと思うのだけど、なぜ余計な空白行出力に繋がるのかは不明。。
文字コードにズレが発生した??

解決方法

Oracle Spool adds extra LF - Stack Overflow

SQL*Plus のオプション RECSEP に OFF を指定して、レコード・セパレータを出力しないようにする。
デフォルトでは WRAPPED になっている。
http://otndnld.oracle.co.jp/document/products/oracle11g/111/doc_dvd/server.111/E05784-01/ch12040.htm#i2699269

#(疑問)このレコード・セパレータについてよく理解していなくて、出力しないようにしたのにレコード単位で行出力されるのはなんでなんだろ??

余談

改行自体をなくしてしまう場合は、対象のカラムに対して REPLACE を使用して改行コードを空白に置換する。

例)
改行コードCR, LF, CRLFすべてを空白に置換する場合
CR -> chr(13)
LF -> chr(10)
CRLF -> chr(13) || chr(10)

select
	replace(replace(replace(FOO, chr(13) || chr(10), ''), chr(10), ''), chr(13), '')
from
	hoge