jade4jでbootstrapのgridが上手く書けない
neuland/jade4j: a jade implementation written in Java
jade4j、というかインデントで構造を表すテンプレートエンジンで、下記みたいなHTMLを出力したいんだけどやりかたが分からない。
<div class="row"> <div class="col-md-4">余市</div> <div class="col-md-4">角</div> <div class-"col-md-4">響</div> </div> <div class="row"> <div class="col-md-4">ボウモア</div> <div class="col-md-4">ラフロイグ</div> <div class="col-md-4">アードベッグ</div> </div>
余市、角、響・・・などの文字はリストで渡されているものとする。
なんのことは無いbootstrap的なGridレイアウト。
ただ、3要素ごとにrow
クラスのdiv
タグを出力したいだけ。
each w,i in whiskeys if i % 3 == 0 .row .col-md-4 #{w}
とかって書くと、row
とcol-md-4
が同じインデントで出力されてしまうので、row
の意味が無くなってしまう。
と書いてる内にgrid
を検索ワードに含めて調べれば良いことに気づき、調べてみると下記リンク。
html - Jade each iteration modulus for responsive Twitter Bootstrap - Stack Overflow
これだと、3の倍数のリストを渡すようにすれば良いということらしいが、ビューとコントローラーの暗黙的な結合度が高くなるので気持ち悪いなぁ…。
jadeと同じくインデントで階層を表すhamlで調べてみた。
haml - How to create a helper for build grids in Ruby On Rails - Stack Overflow
Rubyにはeach_sliceなるメソッドがあるのね…。
今使ってるのはJava・・・。
実装しようとしたけど上手く出来なそうなので、一旦寝かしておこう。
docker rmを楽に実行したかった
docker rm
の引数にコンテナID渡すのが面倒。
なので、peco使ってインタラクティブにコンテナID選択できるよう下記のaliasを設定した。 peco で Docker の container ID を楽に選択する alias - Qiita
だけど、普通にdocker rm `P`
とかで実行しようと、alias実行で取ってきたコンテナIDをコマンドで実行しようとしてしまうのでうまく行かない。
kaakaa@kaakaa-System-Product-Name:~$ docker rm `P` 138a67d406ca: コマンドが見つかりません docker: "rm" requires a minimum of 1 argument. See 'docker rm --help'. Usage: docker rm [OPTIONS] CONTAINER [CONTAINER...] Remove one or more containers
ちょっと悲しいけど docker rm `echo P`
することでzsh上なら動くようになった。
ただ、自分のbash環境だと上みたいなエラー・・・。
これで良いのか感が拭えない。
Mastodonについて思いの丈を
この記事はMETALバンド Advent Calendar 2015 - Adventar の17日目の記事です。
昨日は Natsumi Akai さんの クリーンボイスとスクリームが魅力な女性ボーカルFlyleaf | 音楽 | なちこブログ | Webクリエイターなちこの旅 でした。
FlyleafはDir en greyの薫が紹介してたので知って、1st買いました。
フロントマンとしてのレイシーは色んな意味で魅力的でしたが、まさか脱退してしまうとは…。
というわけで第一回 LoudPark 06出演繋がりということでMastodonの紹介を。
紹介
Mastodonはジョージア州・アトランタ出身にて、High on Fireのライブで出会ったメンバーが2000年に結成。
ジャンルはWikipediaによるとプログレ/スラッジ/オルタナティブメタルと、ちょっと取っ付きにくい印象。
しかし、結成当初こそアンダーグラウンド臭の強いスラッジコアでしたが、メジャーデビューあたりからプログレッシブかつメロディアスさが増していき、最近ではメロディアスどころかポップさすら兼ね備えてくるなど、色んな層にアピールできる魅力を持ったバンドです。
最近のポップ化路線については元々MastodonをメタルバンドにしたくないというBrent Hinds(g,vo)の意向が強く、Crack The Skye
(2009)の頃にBrentが打ち出す方向を推し進めていこうというバンドとのしての決断があったそうな。
*1
このBrentさんは中々のエンターテイナーで、グラミー賞では素行の悪さにより会場から締め出されたり*2、MTVかなんかののイベントで一緒になったSystem of a DownのShavoと喧嘩になって瀕死の重傷を負うなど*3、話題に事欠かないのが魅力。
音楽の方に話を戻すと、Mastodonとして公式にリリースされているカバー曲も Thin Lizzy / ZZTop / Metallica / Melvins / Flaming Lips / Feist / Harry Nilsonなど多岐に及んでおり、そのあたりからもMastodonのジャンルレスさが伺えます。
最初に記事書こうとしたときに、ここらへんの情報ばかり集め始めてて 「思いの丈」というよりも、ただのWikipediaっぽくなったので、お蔵入りしました。
お蔵入りしたものはMastodonに。
出会い
Mastodonと出会ったのは2006年の末頃。
自分は大学生で、特に趣味も無かったので音楽を趣味にしようと、安い輸入盤をいろいろ漁って洋楽を聴き始めた頃でした。
最初の頃はDeftonesやらSystem of a DownやらのUSヘヴィロックあたりにハマり始め、この年のサマソニのトリだったMetallicaの映像なんかを見てメタル熱が高まっていました。
そんな時に、ふとした時に見たMTVかなんかのメタルPV特集みたいなので出会ったのが Wolf is Loose
。
(YouTubeにPVが無かった…)
手数の多いドラムに勢いのあるリフ、咆哮するボーカルに圧倒されつつ、中盤の単音ツインの下降フレーズあたりでもうやられました。初っ端ブチギレてるのに中盤ダンディー。
今は無き横浜 HMVで、この曲の入ってるBlood Mountain
を購入してからはアホみたいに聴いてました。
オススメ
Blood Mountain
はMastodonとして3作目のフルレングスで、メジャーデビューアルバムでしたが、Mastodonの名盤と言えば、その一個前にリリースされたLeviathan
だと思います。
Leviathan
のオープニング曲であるBlood and Thunder
は今でもライブのラストを飾るMastodonの代表曲。
名リフ100選みたいな企画でもちょこちょこ名前が挙がったりします。
そして、Leviathan
とは別に、もう一つのMastodonの名盤だと思ってるのがCrack The Skye
(2009)。
アルバム1枚を通じて一つのストーリーとなっており、10分超えの曲が2曲含まれてるなど、Mastodonのプログレッシブさの金字塔。
(ただ、Dream Theater的なプログレ感を求めると肩透かしをくらうかと)
下に貼ったのはアルバムのラストを飾る10分超えのThe Last Baron
。
めまぐるしく展開を変えながら襲い来るヘヴィネスと、イントロ・アウトロでのBrentのギターソロは圧巻。
ただこのアルバム。国内盤のボートラでは何故かこの曲の後にZZ TopのJust Got Paid
のカバーを入れてくるという、雰囲気も何もあったもんじゃない選曲。
さらにこの作品のリリース時期にSummer Sonic 09で来日するのですが、アルバムの雰囲気とは正反対の真っ昼間のマリンに出番を持ってくるという悲劇も…。
その後、The Hunter
(2011)、Once More 'Round The Sun
(2014)がリリースされますが、ココらへんの作品は今までのエッセンスを取り入れつつ、更にキャッチーさを含んできます。
最新作のコレなんかはとってもキャッチー。
(最近のPVはメンバあまり出てこないし、ストーリーも訳分からんのが多くて、何考えて作ってんのかよく分からんです。これは珍しくメンバが出てくる。)
アルバムとしてポップさを増すごとにチャートの順位も上昇していき、The Hunter
ではBillboard 200で初のTop10入り、Once More 'Round The Sun
では6位にランクインするなど、名実共にメタルの次世代を担う存在となってきています。
最近では各メンバのサイドプロジェクトも活発になってきており、先日紹介した*4 Troy(b,vo)の参加しているKiller Be Killedなんかは単体のバンドとして見ても好きなバンドです。
また、来年にはBrent(g,vo)がBen Weinman(Dillinger Escape Plan)、Tomas Pridgen(ex-Mars Volta)らと組んだGiraffe Tongue Orchestraのリリースが控えており、そちらも期待大です。
その他のサイドプロジェクトについてはお蔵の方に雑多にまとめてます。
https://gist.github.com/kaakaa/a358e871cc0710f149f8#サイドプロジェクト
来日
海外との温度差が開いてきた印象のあるMastodonですが、来日公演はそこそこ多いです。
High On Fireらと共演したExtreme The Dojo Vol.5が初来日で、次の来日公演もExtreme The Dojo Vol.11。Vol.11はISIS / Converge / Mastodonというカオティックコア/ポストメタルファンなら垂涎もののラインナップでした。(見たかった…)
その後、2006年には第一回Loud Parkと、それに伴うSlayerの単独公演のオープニングアクト。
そして悪夢の SummerSonic 09 出演から、今年久しぶりの来日は念願の単独公演。
今年の単独公演のラストでBran Dailor(dr)が「待たせてごめん。すぐ戻ってくるから。」と言ってくれていたので、次回の来日は近いはず。
あと個人的にはHigh on Fire/Kyleasa/Floorなんかも出演してたFunFunFunFest2010に単身渡米したのは良い思い出。
Mastodonのライブは圧倒的な演奏力と、ちょっと物足りないボーカルというのが定説。
まぁ、好きなら良いんだよそれで。
おわりに
スラッジコア、プログレメタル、ポップメタルと時代とともに色々な音楽性を取り入れつつも、Mastodonとしての軸がぶれてないので、次の作品がどの方向に行くのか楽しみです。
明日は T302さん の「Soilworkの良さを伝えたい」です。
*1:MASTODON's Brent Hinds: "I Fucking Hate Heavy Metal and I Don't Want To Be In A Heavy Metal Band" - Metal Injection
*2:So, MASTODON's Brent Hinds Got Kicked Out The Grammys (Allegedly) - Metal Injection
*3:Mastodon's Brent Hinds' VMAs Head Injury Due to Fight With System of a Down Bassist | Rolling Stone
*4:来日して欲しいMetalバンド - Metalバンド Advent Calendar 2015 - kaakaa Blog
来日して欲しいMetalバンド - Metalバンド Advent Calendar 2015
この記事はMETALバンド Advent Calendar 2015 - Adventar の15日目の記事です。
昨日は 120reset さんの 久しぶりにX JAPANを見たら吹っ飛んだ · Hi light & Deep shadeでした。
X Japanはバンドで紅とかSadistic Desireをカバーしてたりします。
バンドメンバーがXとか聖飢魔IIとかの国内メタルが好きで、それがきっかけで聴き始めましたが、テクニックもキャラクターも際立ってて面白いですねー。もっと早くから聴いておけば良かった。
今回はアドベントカレンダーの枠が空いてたのでKayo Dotの来日決定の宣伝も兼ねてエントリ書きます。 (Kayo Dot来日主催の方とはなんの関わりもないです。ただのファンです。念のため。)
Kayo Dot
「来日して欲しい」を考えた時に名前も挙がらないぐらい有り得ないと思いましたが、来日決まっちゃったよ。
Kayo Dot来日決定で盛り上がるTwitterタイムラインとは裏腹に、当日スカスカになりそうな予感もしたので宣伝も兼ねてのエントリ。
ただ、Kayo Dotはメタル
というとちょっと微妙なところで、アヴァンギャルド/エクスペリメンタルとかポストメタルとかそっち方面。
とは言え、長尺の曲の所々にメタリックなサウンドを入れてきたりするので、メタル
の括りに入れても良いかと。
興味を持った方は、主要人物のToby Driverの昔のバンドMaudlin Of The Wellなんかも掘ってみると面白いと思います。
来日公演主催のRealising Mediaさんは来日決定の1年前にこんなツイートしてたりしたんですね。
こんな感じでオーディエンスの反応見えるようになったのもITの進化の賜物ですね。 明日からも頑張りましょう。
Killer Be Killed
こっからはタイトルどおり来日決まってない勢。
Killer Be Killed
は後日紹介予定のMastodonのフロントマンTroy Sandersのサイドプロジェクト。
好きなバンドのメンバーのサイドプロジェクトはオリジナルを超えることがあまりないという印象があるのですが、コレは良いです。 メンバも豪華。
- Troy Sanders(Mastodon)
- Max Cavalera(Cavalera Conspiracy, Soulfly)
- Greg Puciato(Dillinger Escape Plan)
- Dave Elitch(Antemasque, ex-Mars Volta)
下に貼ったのは1枚目のアルバムの1曲め。惚れました。
結成当初はMax Cavaleraが昔やっていたNailbombのような音楽を志向していたらしく*1、そんな感じの粗暴さと、MastodonやDillinger Escape Planなどのメロディアスさとカオティックさを兼ね備えた感じが格好いいです。 上に貼った曲のGreg Puciatoが唄うサビとかなんかは、元のバンドでは想像できないほどキャッチーで疾走感があったりするので、そんな意外性も面白いです。
今年春先のオーストラリアツアーから活動休止してたっぽいですが、Antemasqueの活動を優先するためにツアー前に抜けたDave Elitchに代わって、Ben Koller(Converge)が参加して、自作を作り始めているというニュースが。*2
カバレラさん、Mastodon、Dillenger Escape Plan、Convergeとか…素敵です。
来日と共に次作も期待してます。
Red Fang
オレゴン州出身の4人組。2005年結成。
こっちは頭空っぽで聞くような疾走感のあるストーナーメタル。 PVは毎作ビール飲んでたり、内容も馬鹿馬鹿しいので楽しさ満開。
野外の夏フェスとかでビール片手に見たい。
YOB
こちらもオレゴン州出身の3人組。1996年結成。
Red Fangとは打って変わって、コチラはズルズル引き摺る長尺ドームメタル。
暗黒ドゥームだけど、メロディはちゃんとあって、しかも長尺ってところにとても惹かれます。
展開もゆっくり進行していくので作業用BGMにもGood!!
ただ、ライブ行くとなるとあまり動きがなさそうなので腰痛が心配…そんな年になりました。
YOBはPitchforkのTop of Metal 2014で3位とかになってるので、そこそこ知名度はありそうな気がするけど全然名前をみたことが無いような。*3
どんな評価なんでしょ。
METALバンド Advent Calendar 2015 - Adventarは明日も参加予定の方がいないようなので、どなたかいかがでしょう?
明日がなければ明後日もkaakaa_hoe_progの「Mastodonについて思いの丈を」です。
GradleでEclipseプラグインをビルドする
Eclipseプラグインを作り続ける人もいる、このロクでもない世の中に向けて。
基本的には下記を参考に。 mikamikuh.hatenablog.com
自分の環境で実行したら、META-INF/MANIFEST.MFファイルが、Gradleがjarタスク実行する時に自動生成するMANIFEST.MFに置き換えられてしまっていた。
ので、jar.manifestの設定で、Eclipseが生成するMANIFEST.MFを出力するよう指定した。
Eclipseプラグインフォルダをどう指定するかが悩みどころ。
ちゃんとやるなら、Gradleのwuffプラグイン(Maven TychoのGradle移植)を使うべきだろうけど、社内プロキシに阻まれてインストール出来なかったので、簡易的にコッチでも大丈夫かな?(まだHello Worldプラグインでしか動作確認していない)
[フェス] サマソニ予習用サービスを作りました
紹介
コレは何?
最近のセットリストから、ライブで演奏しそうな曲を調べるもの。
フェスで知らないアーティストいっぱいですが、定番曲ぐらいは知っておきたい時にどぞー。
検索窓つけてますが精度が悪く、検索結果が無い場合が多いです。
「Mastodon」なら検索できるはずです(サマソニ関係無い)
どんなもの?
setlist.fm - the setlist wiki というものがあります。
これは、登録したユーザがライブで演奏したセットリストを書き込んで共有するサービス。
setlist.fmのAPIを叩いて、最近のセットリストからよく演奏している曲を探しています(単純に加算してパーセンテージ出してるだけ)。
よく演奏している曲の動画をYouTube Data APIを使って、ページに埋め込んでいます。
もっと詳しく
使ってる技術
使用しているAPI
-
- アーティスト名からMusic Brainz IDというものを取ってきます
- 22 req / 20 sec など制限があるようです
-
- Music Brainz IDを元にセットリストを検索します
-
- 「アーティスト名 + 曲名」で検索して、一番先頭の動画をページに埋め込んでます
心残り
いっぱいあります
Music Brainzの検索精度
結構辛いです。
例えばMUSE。 Search Results - MusicBrainz
Fuji Rockにも来る、UKバンドのMUSEが来て欲しいところですが、そのMUSEはスコア 98 で、他にスコア 100 のグループが5つヒットします。
どういう基準でスコアが付けられてるのかよくわかりません。
また、コレが辛いところですが、同じアーティストのIDが2つあることがあります。
斉藤和義 - MusicBrainz
斉藤和義 - MusicBrainz
酷いことにMusic Brainzの検索で見つかるIDとsetlist.fmで保持してるIDが別物ということもあり、悲しい思いをしました。
IDと言ったな。アレは嘘だ。
最初はサマソニのサイトのHTMLから自動で~ってのを考えてましたが、結局半分ぐらいは手動検索でMusic Brainz IDを探してました。
音楽関係のサイトが全てMusic Brainz IDベースになれば、もう少し精度上がると思うんだ。
setlist.fm のコンテンツ
ユーザベースのサービスということもあり仕方ないことですが、セットリストの登録が少々残念です。
特に日本のアーティスト。
BABYMETALやDIR EN GREYなんかの海外でも話題のアーティストについてはちゃんと登録がありますが、サマソニの出番的にBABYMETALより格上のRADWIMPSなんかは寂しい感じ。
音楽好きにはなかなか良いサービスだと思うので、もう少し日本でも流行って欲しいです。
D'ANGELO AND THE VANGUARD
シングルクオートのせいでJSONが壊れるのでやめてください
おわりに
フジロックのメニューも作ろうとしたけど、HTML見るとヘッドライナークラスがimgタグのロゴ表示しか無いので萎えました。
altぐらい…
commandモジュールがパイプを使えないことを経験した
という話。
LibreOfficeインストール用のPlaybookを書いてる時に、複数のrpmファイルをlocalinstallする必要があったので、こんなタスクを書いた。
- command: find LibreOffice_{{ detail_version }}_Linux_x86-64_rpm/RPMS/ -name *.rpm | xargs yum -y localinstall
エラーになった。
TASK [command] ****************************************************************** fatal: [192.168.33.14]: FAILED! => {"changed": true, "end": "2015-06-08 09:53:27.678648", "stdout": "", "cmd": ["find", "LibreOffice_4.4.3.2_Linux_x86-64_rpm/RPMS/", "-name", "*.rpm", "|", "xargs", "yum", "-y", "localinstall"], "start": "2015-06-08 09:53:27.662475", "delta": "0:00:00.016173", "stderr": "find: paths must precede expression: |\nUsage: find [-H] [-L] [-P] [-Olevel] [-D help|tree|search|stat|rates|opt|exec] [path...] [expression]", "rc": 1, "invocation": {"module_name": "command", "module_args": {"_raw_params": "find LibreOffice_4.4.3.2_Linux_x86-64_rpm/RPMS/ -name *.rpm | xargs yum -y localinstall"}}, "stdout_lines": [], "warnings": []}
findの-name
オプションの引数 *.rpm
をダブルクオートで囲ってないのが原因だと思って調べまくってたけど解決できず、ようやくcommandモジュールにパイプやリダイレクト等を使用できないことを知る。
ansibleでshellやcommandを使う時の注意点 - Qiita
commandモジュールじゃなくてshellモジュールを使えばいいだけだった。
- shell: find LibreOffice_{{ detail_version }}_Linux_x86-64_rpm/RPMS/ -name *.rpm | xargs yum -y localinstall
shellモジュールの方が出来ること多いから、commandモジュールいらなくね?って疑問に言及しているエントリを見つけた。
Ansibleのshellモジュールとcommandモジュールの使い分け | bacchi.me
shellモジュールは記述されたコマンドを/bin/shで実行するけど、commandは違うよという話。 ほんまかいな。
まぁ、使えるコマンド制限されてたほうがセキュリティ的に頑丈だよねってことだろうか。
shellモジュールとcommandモジュールの違いが気になってきたのでソースを見てみた。 (結果は、よくわかりませんでした)
ansible/mod_args.py at 5622fc23bc51eebde538b582b5e020c885511f31 · ansible/ansible
shellモジュールが使われてる場合は '_uses_shell' フラグを True にして、アクション名をcommandに書き換えている。 ということは、shellもcommandも同じ動きをする?
'_uses_shell' が使われている箇所を調べるためにansible-playbook実行した時のトレースを見てみる。 Python スクリプトの動作をトレースする - とあるSIerの憂鬱
[vagrant@localhost ~]$ python -m trace --trace /usr/local/src/ansible/bin/ansible-playbook -i hosts pptgallery-playbook.yml --ask-pass | grep '_uses_shell' SSH password: mod_args.py(125): args['_uses_shell'] = True
設定されてるだけで使われてなかった。。。
とりあえずここまで。
蛇足
来日行こうか迷う。