木っ端拾いの材木流し

Cannot see the wood for the trees.

初音ミク利用楽曲『みくみくにしてあげる♪【してやんよ】』がJASRACに登録された件 まとめ未満

とりあえず一通り収集できたのでまとめておく。
経緯はなるべく時系列。まとめ中心で目新しい事実や意見が書かれていなかったものについては一次情報にぶら下げ。『みくみくにしてあげる♪【してやんよ】』以外の楽曲は話が混乱するので経緯には入れなかった。

経緯

見解を述べる人々

「みくみくにしてあげる」以外の曲を含む関連記事

雑感

  • クリプトンが問題視したのは次の2点。
    • ドワンゴ・ミュージックパブリッシングが「みくみくにしてあげる」のアーティスト名をクリプトンに無断で「初音ミク」として登録したこと
    • ドワンゴ・ミュージックパブリッシングが「みくみくにしてあげる」をJASRACに登録することについて、クリプトンの許諾を得ていない?こと
  • アーティスト名については初音ミクの名前を消すことで合意済み。
  • ドワンゴ・ミュージックパブリッシングが「みくみくにしてあげる」をJASRACに登録することについて、クリプトンの許諾を得ていない?』は混乱している。
    • 作者=作詞・作曲者、ドワンゴ・ミュージックパブリッシング=出版社で、詞と曲の利用許諾を作者がドワンゴ・ミュージックパブリッシングに委託or信託→ドワンゴ・ミュージックパブリッシングがJASRACに委託or信託、という流れは分かる。
    • 分からないのはクリプトンが「何の」利用許諾を「誰と」結ぼうとしているか、結ぶことになっているか。「初音ミクという名前」の許諾については前述の通り合意済みだから、それ以外の何かということになる。
      • 曲の素材としての「初音ミク」を商用利用する許諾、かな。だとしたらクリプトンと作者の間のライセンスもしくは個別契約という話になりそうだけど、作者がドワンゴ・ミュージックパブリッシングとの間で許諾に関して口出ししないといった契約を結んでしまっていたら、ドワンゴと話す必要がある。
  • JASRACへの登録はあくまで楽曲だから、仮にアーティスト名が初音ミクで登録されていたとしてもほかの初音ミク使用楽曲はなんら制限を受けない。
  • 口約束だと「条件付の許可」が「無条件の許可」になったりする。だから事前に契約が必要なわけで。

はてなハイクまとめ未満

絶対追いきれなくなってあとで泣くので、keyword はてなハイクに書いてあることをまとめ未満。
ちゃんとしたヘルプが読みたければモエリロンへ。

超FAQ

お絵描き投稿できない→IE6はFlash Playerをアップデートするとよさげ。Firefoxはすぐ使えるっぽい。IE7JavaScriptエラーが出るのでNG。

使い方

タイトルに何も入れずに発言すると自分のidページの発言になる
本文に何も入れずに発言すると、タイトルに入力されたページに移動
http://h.hatena.ne.jp/jkondo/9236538514771667811
タイトルなしで投稿するとid:ユーザー名というタイトルになる
Following=はて☆Friends+過去一定期間に書いたキーワード
http://h.hatena.ne.jp/SweetPotato/9236538497492499546
返信が付いた際に、メッセージを送信するように変更しました
http://h.hatena.ne.jp/jkondo/9236556108317236508
二重鍵括弧でキーワードリンク、なんです
http://h.hatena.ne.jp/jkondo/9236556098325791638
トップページ左のUsersを、最近発言した人が表示されるように変更しました。
http://h.hatena.ne.jp/jkondo/9236538507767531856
投稿するとFollowing(http://h.hatena.ne.jp/SweetPotato/following)の内容がぜんぶ飛んでくる
http://h.hatena.ne.jp/manpukuya/9236556089611512763
followingページに表示されるのは、過去1ヶ月以内にお互いに☆を付け合ったユーザー(Star Friends)と、自分が過去一定期間内に書き込みを行ったことがあるキーワード(Following Keyword)の最新の書き込みです。
”自分が過去一定期間内"に書き込みを行ったことがあるキーワード(Following Keyword)の最新の書き込みです。
この一定期間内ってどれぐらいなんだろう?Following綺麗にしようとすると変なのに書き込めないし、Followingしばりを早くも感じた
http://h.hatena.ne.jp/touristroute/9245598529447354713
YouTubeの動画を貼り付けられる機能を追加しました。
http://h.hatena.ne.jp/hatenahaiku/9236538556344931097

使い方(IM)

右上のSettingsでIMの投稿先が設定できる
http://h.hatena.ne.jp/Yuichirou/9236538497184378664
Google Talkからは=を含む投稿ができない
http://h.hatena.ne.jp/SweetPotato/9236538497251855301
Google Talk から投稿するときにイコール指定しないと直近のキーワードが使われる
http://h.hatena.ne.jp/SweetPotato/9236538497284533817
Google Talkから投稿すると「h: keyword: はてなハイク」っていう応答が返ってくる
http://h.hatena.ne.jp/SweetPotato/9236538497295153261

要望

他の動画サイトも対応してもらえるとうれしいです。
http://h.hatena.ne.jp/takunama/9236556149185920064
Replyもらったことにはどうやって気付いたらいいんでしょう。
http://h.hatena.ne.jp/r_iizuka/9236538514556129143
お絵描き投稿に失敗した時のために Flash Player のローカル記憶領域に描いた絵を保存しておく機能
http://h.hatena.ne.jp/utiliti/9236556133152716125

その他

絵の多さにおどろくjkondo
http://h.hatena.ne.jp/jkondo/9236556089728812006

Outlook Express 6のメールを共有する

CドライブとDドライブに入れたWindows 2000Outlook Expressでメールを共有しようということで。
Outlook Express のメールを Windows 2000 と 9x で共有したいのですが - win:Outlook Express 使用法ヒント
http://homepage2.nifty.com/winfaq/c/oetips.html#972
上記はOutlook Express(OE) 5.01の場合。自分とこのはOE 6.00ですが、上記の手順に従うと既存のメールフォルダがこれから運用する方のOEで作られたメールフォルダで上書きされて既存のメールフォルダが空っぽになります。
OE 6.00の場合は以下のようにメールをバックアップして戻す必要があります。

  1. 現在 OE を運用している方の OS を起動します。
  2. OE を起動します。
  3. [ツール]−[オプション] をクリックします。
  4. [メンテナンス] タブをクリックし、「保存フォルダ」ボタンをクリックします。
  5. メールメッセージが保管されているフォルダをメモします。
  6. ESC キーを 2 回押した後で OE を終了します。
  7. 5.でメモしたフォルダの全ファイルをバックアップします。
  8. PC を再起動し、これから OE を運用する方の OS を起動します。
  9. OE を起動します。
  10. [ツール]−[オプション] をクリックします。
  11. [メンテナンス] タブをクリックし、「保存フォルダ」ボタンをクリックします。
  12. 「変更」ボタンをクリックし、5. でメモしたフォルダを設定して「OK」をクリックします。
  13. 「OK」をクリックします。(「新しいストアの場所は Outlook Express の再起動後に有効になります。」とかいうメッセージが出るか、何もメッセージが出ません。)
  14. 「OK」をクリック後、OE を終了します。
  15. これから運用する方のOEを起動します。(このとき5.でメモしたフォルダのメールが消えます。)
  16. 何もせずにOE を終了します。
  17. 5.でメモしたフォルダを開き、7.でバックアップしたファイルを戻します。同名のファイルはすべて上書きします。
  18. これから運用する方のOEをもう一度起動して、メールが読めることを確認します。

Outlook Expressで新規メールを読むことはほとんどありませんが、昔のメールファイルを読む場合に。
まあ、保存フォルダを変えなくてもdbxファイルをこれから運用するOEにコピーすれば良いという話もありますが。

PC Solarisご臨終

やってもうた。ディスクの修復をミスってデータからOSまで綺麗に消えた OTZ

PC Solarisマシンでディスクの読み取りエラーが発生。

formatコマンドのpartition printで表示されるブロック数とsyslogのError Blockの番号から照合するとswapに割り当てているパーティションだった。別にデータは入っていないのでformatコマンドのディスクの修復で修復してみることにした。

前準備。/ にスワップ用のファイルを作ってスワップに追加。

# mkfile 1G /swapfile01
# swap -a /swapfile01
# swap -l
(結果が表示される)

swap -dコマンドでスワップパーティションを削除しようとしたが、現在のスワップがダンプの出力先に指定されているから削除できないと言われたので/etc/vfstabからはずして再起動。

# vi /etc/vfstab
(現在のスワップを追加しているエントリをコメントアウト)
(/swapfile01をスワップとしてマウントするエントリを追加する。/をマウントするエントリよりうしろに書く)
# shutdown -i6 -g0 -y

再起動後formatコマンドで修復に入る。いきなりanalyzeメニューのサブコマンドを実行するとディスク全体(全パーティション)が対象かつ不良ブロックを修復しようとするので、setupで設定を変えておく。

# format
(省略)
> analyze
(省略)
> setup
(analyze entire diskはn)
(blockを指定する。swapパーティションの最初から最後まで)
(ループ回数は1で十分)
(自動repairはnoにする)
(ランダムテストはいらない)
(書き込みパターンなんたらもいらない)
(defect list restoreこれがわからん。no)
(veriry disk labelこれもわからん。no)
> config
(結果を確認)

設定変更後、readを実行。

> read
error blkno 46502
:

エラーになったブロックが出てくる。

ブロックの修復方法は2つ。repairサブコマンドで1ブロックずつ指定して修復する方法と、setupでRepair defective blocks: yesにしてからanalyzeメニューのサブコマンドを実行し自動修復する方法。

前回はreadで出てきた数十個の不良ブロックを1個ずつrepairコマンドで修復した。というのも、Repair defective blocks? yesにしてreadを実行してもエラーが修復されなかったため。*1

で、今回はread以外のサブコマンドを使ってみた。自分が選んだのはverify。よりによって。

verifyも他のサブコマンドと同様ブロック範囲を指定すればそこだけを上書きすると思っていたが、マニュアルをよく読むと、

purge ディスク上のデータをすべて削除し、いかなる手段でも取り出せないようにします。ディスク全体 (またはディスクのセクション) に 3 種類のパターンを書き込むことにより、データを削除します。検査に合格すると16 進のビットパターンがディスク全体 (またはディスクのセクション) に上書きされます。
デフォルトで欠陥ブロックを修復します。
verify 最初の検査に合格すると、ディスク全体の各ブロックに固有のデータを書き込みます。次の検査に合格すると、データを読み取り、検証します。ディスク上の既存のデータは破壊されます。デフォルトで欠陥ブロックを修復します。
Solaris 10 System Administrator Collection - Japanese - Solaris のシステム管理 (デバイスとファイルシステム) - 15. format ユーティリティー (参照情報) - format のメニューとコマンドの説明 - analyze メニュー

ひとつ上のpurgeと比べるとverifyには「ディスク全体」のうしろに括弧書きがない。つまりsetupのStarting block number: やEnding block number: で選んだブロック番号の範囲とは関係なく、ディスクのすべてのデータを上書きする。えー。

このときはまだそれに気づかず、

analyze> verify
 Ready to verify (will corrupt data). This takes a long time,but is interruptable with CTRL-C.
 Continue? y

はい消えたー。(CV:愛川欽也)
verify終了後にreadを実行するとエラーは出なくなった。formatコマンドを終了して再起動。この時点ではまだ操作できている。

再起動後、BIOS:OK→Primery Boot(ブルーバックのメニュー):OK→Secondary Boot(白バックのメニュー):黒い背景にloading boot.iniとだけ表示された状態で停止。本当にありがとうございました。

*1:Restore defect list? とRestore disk label? の設定がまずかったのかも知れない。前回はたしかno,noで実行した。この2つのオプション、何をどこからどこに復元するのか説明されていない。Restore defect list? で言うと、readなどで見つかった不良ブロックをディスク上のprimeryのdefect listに書き込むことを言っているのか、backup defect listをprimeryに上書きすることを言っているのか不明。

Cygwin上のAWKでの改行コードの扱われ方

特定の文字列を含むセクションだけを抜き出すの続き。

すっきりしてないのですが、改行を含めて Unix 系 OS と同じにするなら BINMODE で実行するのが望ましいのかもしれません。

特定の文字列を含むセクションだけを抜き出す (続き) - 日本 GNU AWK ユーザー会 0.2

情報ありがとうございます m(_ _)m CygwinだけでなくGAWKにもBINMODEというのがあったのですね。調べてみたらGAWKのドキュメントに記述がありました。

Under OS/2 and DOS, gawk (and many other text programs) silently translate end-of-line "\r\n" to "\n" on input and "\n" to "\r\n" on output.

http://www.kt.rim.or.jp/~kbk/gawk-3.1/gawk.html#SEC257

Cygwin上のGAWKを「Under OS/2 and DOS」と呼んでいいか微妙ですが、GAWKが"\r\n"を"\n"に変換しているようです。で、BINMODE=rとすると入力ファイルの改行コードをそのままGAWKで処理すると。勉強になりました。
(10/19追記)
AWKの偉い人らしいきむらさん*1が調査結果を公開されていました。ありがとうございます。
本当はちゃんと書きたかったのですが時間がないため簡単なご紹介のみでご容赦下さい。

手順としては

  • Cygwin上のCプログラムで入力の改行コードが自動変換されることを確認
  • AWKデバッグモードで動かして、最初の入力時点で改行コードが自動変換されることを確認
  • ソースを追いかけてlibcが原因と特定

という流れです。
問題解決力の高さは問題を切り分ける分解能の高さからくるんだなと感じます。

*1:よく見たら上のGNU Awk ユーザーズガイドの訳者さんじゃないか!

特定の文字列を含むセクションだけを抜き出す

見出し("*"で始まる行)+それに続く複数行の本文+日付区切り"====="で構成されたテキストから特定の文字列を含むセクションを抜き出す。

gawk 'BEGIN {q="検索したい文字列"; IGNORECASE=1; ORS="\r\n"} $0 ~ ("^*[^*]+" q) {o=1} (/^*[^*]/ && $0 !~ q) || /^=====/ {o=0} o {print}' 入力ファイル

cygwingawkで改行コードがCR+LFのファイルを処理する場合、ORS="\r\n"で出力レコードセパレータを指定する。(無指定だとLFになる)
cygwingawkは入力行区切りの扱いがちょっと変で、RSが無指定の場合は改行コードがCR+LFでもLFでも行区切りとして認識する。デフォルトのRSが"\r\n|\n"なのかと思ったが、RS="\r\n"とするとどちらの改行コードも認識せず、RS="\n"だとどちらも認識する。cygwinがbinmodeでもtextmodeでも現象は同じだった。gawkの内部で最初にCR+LFをLFに変換してから処理しているように見える。

追記

現象がつかめませんが、gawk の Texinfo ファイルを読む限り Cygwin だから特別とかいうこともなさそうです。

Cygwin の gawk - 日本 GNU AWK ユーザー会 0.2

たとえば、

1行目[CR][LF]
2行目[CR][LF]

という内容のinfileがあって

gawk 'BEGIN{RS=文字列1;ORS=文字列2}{print}' infile > outfile

でoutfileに出力すると、文字列1、文字列2の指定に応じて実際のoutfileの内容は以下のようになりました。

# RS ORS 実際のoutfileの内容
1 無指定 無指定 1行目[LF]
2行目[LF]
2 無指定 ORS="\n" 1行目[LF]
2行目[LF]
3 無指定 ORS="\r\n" 1行目[CR][LF]
2行目[CR][LF]
4 RS="\n" 無指定 1行目[LF]
2行目[LF]
5 RS="\n" ORS="\n" 1行目[LF]
2行目[LF]
6 RS="\n" ORS="\r\n" 1行目[CR][LF]
2行目[CR][LF]
7 RS="\r\n" 無指定 1行目[LF]
2行目[LF][LF]
8 RS="\r\n" ORS="\n" 1行目[LF]
2行目[LF][LF]
9 RS="\r\n" ORS="\r\n" 1行目[LF]
2行目[LF][CR][LF]

自分はgawkの動作を以下のように考えていました。

  1. infileを先頭文字から読む
  2. RSで指定されたパターンが現れるとそのパターンの前までの文字列を1行と認識
  3. 1行と認識した文字列の末尾にORSで指定された文字列を付けて出力

これが正しいとすると、#4〜#9の出力は以下のようになるはずです。

# RS ORS 想定されるoutfileの内容
4 RS="\n" 無指定 1行目[CR][LF]
2行目[CR][LF]
5 RS="\n" ORS="\n" 1行目[CR][LF]
2行目[CR][LF]
6 RS="\n" ORS="\r\n" 1行目[CR][CR][LF]
2行目[CR][CR][LF]
7 RS="\r\n" 無指定 1行目[LF]
2行目[LF]
8 RS="\r\n" ORS="\n" 1行目[LF]
2行目[LF]
9 RS="\r\n" ORS="\r\n" 1行目[CR][LF]
2行目[CR][LF]

しかし実際の出力とは異なります。
実際の出力を見ると、以下のように動いているような気がします。

  1. infileを先頭文字から読む
  2. [CR][LF]が現れると無条件で[LF]に変換する
  3. 変換後の文字を読んでいき、RSで指定されたパターンが現れるとそのパターンの前までの文字列を1行と認識
  4. 1行と認識した文字列の末尾にORSで指定された文字列を付けて出力

こう考えると#4,#5で[CR]が消えたり#7,#8,#9の1行目と2行目の改行コードが異なる理由も説明できます。
コメントされていた『cygwin自体でどうmountしているかということと』についてはbinmode,textmodeの両方でマウントした場合で同じ結果が出たので、mountが原因では無いのではと思っています。
……という訳なんですが、うまく伝えられてるかな。あ、Linuxでは試していないのでcygwin特有ではないかも知れません。

基礎から始めるデータベース入門セミナー

オラクル通信の連載。オラクル社のサイトにはバックナンバーへのリンクも連載の一覧も無いので勝手にリスト化。

*1:ラクル通信のタイトルは「Structured Query Language(SQL)とは?」となっているが第5回タイトルの誤植と思われるため編者により修正

*2:こっちは誤植ではない。内容がループしてるのか?