nml2dbというプレイリストをデータベース化するPythonスクリプト

思い立ったので書いた。一度エクスポートしたファイルを読み込まないといけないんだが、そのうち履歴のnmlから自動的にデータベースに取り込むようにしたい。

あとはもうちょっと綺麗な可視化をしてみたいなぁ

昨晩のリスト

Midnight Run (Wilkinson Remix) / Example
Anticipate (feat. Sam Frank) (Netsky Remix) / Skream
Tap Ho / TC
Thing Called Love (NuTone Remix) / Above & Beyond feat. Richard Bedford
The First Note Is Silent (Original) / High Contrast (feat. Tiesto & Underworld)
Avalon / Maduk
Elektricity Will Keep Me Warm (S.P.Y Remix) / London Elektricity
Link To The Past / Loadstar ft. Xample & Lomax
Avenger / Emperor
Lofah / Need For Mirros
Old Headz / J Majik & Wickaman
4 Years / Muffler
Oceanic (Feat. Sylo) / Maldini
Ganja Man (S.P.Y & Total Science Remix) / Krome & Time
Strobot (Netsky Remix) / Shameboy
Without Sound / Cyantific & Tactile
Raptor / Dom & Roland
Midnight Nation / Optiv
Overdue / Spor
Vanity / Seba
Ritual / J Majik & Wickaman
Clarets March / Spor
Kingdom / Spor
Book Of Sight / Ed Rush
Electric Smile (VIP) / Dom & Roland

残業はするな、「前業」をせよ!

速読の訓練に。15分位かかった。

僕も残業よりは、朝早く出社して定時には帰る派なので、拾える内容はいくつかあった。

ひとつ、なるほどなぁと思ったのは、出された食事を全部食べるなという話。結局、体型を維持することが大切だから無理せず腹八分目でやめとけと。

ジムに行かなきゃいけないし、確かに時間のロスだと思う。自分の場合にはランニングに英語のリスニングをぶつけて時間に走る意味を付加してるけど、リスニングに集中できるレベルでのランはほとんど痩せないし意味ないかもとも思っていたりする。

ちなみに、隣の部署が裁量労働制なのにノー残業デーを儲けてるという話を聞いて、すげー頭悪いなぁーと感心した。せめて前業デーにしたらポジティブなんだけどね。

おまちバルに参加した

いつものように@bg7860と。ちなみにバルっていうのははしご酒イベントで「一品つまみながら一杯飲んで」次の店にいくというものですね。

米夢

1328399930

寒かったので、燗が飲めそうなところをチョイス。高砂を燗でいただいた。ちょっと熱かったかな、ぬる燗が好みなので。

二軒目はこやまという蕎麦屋さん。焼酎そば湯割りと出し巻き卵、蕎麦という、かなり良い感じのチョイスだった。蕎麦も美味しかった。

1328399932

1328399935

1328399938

1328399940

三軒目も蕎麦屋さんでたがたさん。そば焼酎そば湯割りと天抜き。ここも当たりだった。

1328399942

1328399945

1328399947

ここから何軒か振られて、結局伊太利亭でワインを飲んだ。一度いってみたいと思っていたのでOK。

1328399949

1328399951

1328399953

1328399955

1328399957

最後は刺身トロロラーメンのどこかに入ればいいやとペガサートへ。

結局ラーメン。しかし、餃子が付いてたので困った。お腹いっぱいすぎて途中でギブった。

1328399959

1328399961

なかなか楽しかったですねー。次は5月の三島バルのリベンジかなぁ

牢働、労働、朗働

牢働 <-> 労働 <-> 朗働 という概念は面白い

ProductName 自分のために働け! ~ホンダ式朗働力経営
高橋 裕二
講談社 / 1575円 ( 2007-12-07 )


  • ヒトは本当に困って追いつめられなければ、力を発揮できないようにできている。だから困ること、困らせることも必要だろう。
  • やはり構想というのは、日常性から離れた環境の中でまとまる確率が高い性質があるのだろう。
  • 会社という環境は確かに、「作業」には適しているが、物事を集中的に構想する「仕事」には不向きかもしれない
  • コンセプトがないと体験を重視するようになり、体育会系になる

ロマネスコとフィボナッチ数列

自然の造形美を感じる。ちなみにカリフラワーの一種です。

1328306915

しかも

ロマネスコ - Wikipedia

ロマネスコの花蕾は幾何学的な配置となっており、個々の蕾が規則正しい螺旋を描いて円錐を成している。 円錐はさらにそれ自体が螺旋を描いて配列し、これが数段階繰り返されて自己相似の様相を呈する。また、配列した蕾や円錐の数はフィボナッチ数に一致することも知られている。

ついつい手にとってそのままお買い上げしてしまう深層心理に訴えかけるという納得のフィボナッチ効果

静農会のコーナーは楽しいですね。

ProductName 数学ガール
結城 浩
ソフトバンククリエイティブ / 1890円 ( 2007-06-27 )


Traktor Pro2のnml形式のプレイリストをPythonで処理する

TraktorからExportされる.nmlファイルはXMLなのでElementTreeを使えばいい。

from xml.etree.ElementTree import *
elem = parse("liquid.nml").getroot()

for e in elem.findall(".//ENTRY"):
    if e.get("TITLE") is not None:
        print "    %s / %s" % (e.get("TITLE"),e.get("ARTIST"))

/Users/####/Documents/Native Instruments/Traktor 2.X.Xの履歴ファイルを変換すればプレイリストが出力される。

Traktor LEには履歴を保存する機能はなかったので、それだけでもアップグレードする価値は十分にある。

ProductName Native Instruments TRAKTOR PRO 2

Native Instruments / 22340円 ( )


僕とタイフーンとリキッド

今日は構成をある程度考えてからつないでみたので、自分的にも気持ちよかった。そしてadele愛が深まった。オリジナルよりもdrum'n'bassにリミックスされてこそ味わいが深まりますなadeleは。

何を言ってるのかわからなければHOMETOWN GLORY (HIGH CONTRAST REMIX)を聴きましょう。かなり効きます。それからRolling In The Deep (NuTone Remix) を聴きましょう。堕ちます。堕ちたらオリジナルを聴けばいいと思います。

ちなみに今日のプレイリスト

Back 2 U / Logistics
Breathe (Hospitality - Drum & Bass 2010) / Echo Inada
Rectified / Komatic
Winter Blues / Logistics
Snowman / Brookes Brothers
Feel Good (The Prototypes Remix) / Modestep
Angel / Young Ax
Ocean Deep / B-complex
For Love Or Money / D Kay & Concept
BLVD / Loadstar
Rolling In The Deep (NuTone Remix) / Adele
Tear Your Soul / Muffler
Monarch / New Zealand Shapeshifter
Here I Am (Basher VIP) / EZ Rollers
Prism / Phetsta
On A Good Day (J Majik & Wickaman Remix) / Above & Beyond
Midnight Sun / Young Ax
Crazy World / J. Majik & Wickaman

それからHospitality2012のMufflerが最強に泣けるので買いですね。

ProductName Hospitality Drum + Bass 2012
Hospitality Drum + Bass 2012
Hospital R / 988円 ( 2012-02-07 )


明日はおまちバル

バルってきます。

というわけで、気になるあたりをメモ

日本酒飲めそうなところばかりになってしまったw

アジャイルソウヤクサムライ

アジャイル開発を創薬系にどう取り込んでいくかっていう観点で。

ProductName アジャイルサムライ−達人開発者への道−
Jonathan Rasmusson
オーム社 / 2730円 ( 2011-07-16 )


第V部のアジャイルなプログラミングに関しては昔考えたことがあるので、II−IV部あたりを。III部の計画づくりはうまく取り込むのが難しそうな気がするけどIV部の運営は色々参考になる。

まず、ソフトウェア開発と初期創薬開発の似ている部分異なる部分を書いておくが、特に異なる部分が重要。

異なる点

  • 工学的にコントロールできるわけではなく、発見に頼る部分がある。つまり作ってみて評価してみないとわからない部分が大きい
  • 成功したかしないかの二択。9割完成したとかはない(こういうのは失敗とみなされる)
  • ベロシティがうまく見積もれない。ブレークスルードリブンなので非連続の進捗になりやすい
  • あっちを動かすとこっちがおかしくなるというなかでバランスをとリながらベストを探るという多次元最適化戦略になることが多い

似ている点

  • 何人もの異なるエキスパートの協調作業を強いられる。役割はきちんよ分かれているが、優秀な人材は幾つかのフィールドをまたぐことができる(インフラもフロントエンドもできるプログラマみたいな感じ)
  • 自分のジョブしかできないヒトはスコープが狭いし、メタな視点に立てない。学習意欲のない人の生産性が低いもの一緒

みんなをバスに乗せる

スタートを切る前からだめになってしまうプロジェクトの主な理由は次の二点

  • 答えるべき問いに答えられない
  • 手強い質問をする勇気を持てない

まぁ、創薬プロジェクトでもよくありますね、認識しておかなければいけない問題を敢えて目をつぶって進めてた結果、激ハマリっていうパターンが。

手強い質問を先にすませてしまうためにインセプションデッキというツールが使える。

インセプションデッキは10の手ごわい質問と問題から構成されており、いずれの課題もプロジェクトを開始する前に聞いておかないとまずい質問ばかりだ

エレベーターピッチ

効能

  • 明快になる
  • チームの意識を顧客に向けさせる
  • 核心を捉える

テンプレート

  • [潜在的なニーズを満たしたり抱えている課題を解決したい]したい
  • [対象顧客]向けの、
  • [プロダクト名]というプロダクトは、
  • [プロダクトのカテゴリ]です。
  • これは[重要な利点、対価に見合う説得力のある理由]ができ、
  • [代替手段の最右翼]とは違って、
  • [差別化の決定的な特徴]が備わっている。

やらないことリスト

「やる」、「やらない」、「あとで決める」をきちんと見える化しておくツール。

創薬プロジェクトで「やらない」にタスクを入れるのはなかなか難しいかも。なので、「やる」と「後で決める」を明確に分けられればいいかな。

アジャイルなプロジェクト運営

ジャストインタイム分析の利点

  • 最新かつ最も充実した情報に基づいて分析できる
  • プロジェクトが進むにつれて分析がうまくなっていく
  • 手戻りが大量に発生することを避けられる

最後の手戻りを避けられるのは大きな利点だな。それからリリースボードとストーリーボードは便利そうだ。

アジャイルな計画づくり

これが一番納得出来なかった。ベロシティが見積もれないようなプロジェクトだと与えられた期間を頑張るしかないんじゃないかなぁと思う。

それから名前が付いてるのかどうかわからんけど、探索的なプロジェクトだと締め切り間際になると集中力を発揮して何とかやり切るパワーみたいなのってありますよね。そういうのも重要だと思うんだよね。

というわけで、この部に関してはモヤモヤ感が残っているのでまた後で書くかもしれない。

Pythonで Google Tasks API を使う

Todo管理にはGoogle Tasksを使っている。家でも職場でもタスクを追加できて一元管理できるので便利なんだけど CUIでもできたらもっと便利だろうとAPIを触ってみている。

家では普通にDeveloper's Guideの通りに動くんだが、職場のプロキシが超えられないので調べてみたらoauth2client.toolsのrunがダメらしい。

さらに追っかけてみるとflow.step2_exchange(code)のところの第二引数にproxyを設定したhttpを渡さないからこけていた。

run関数使わなければいいじゃんってことで書きなおした。ついでにFLAGも必要なくなった。

import httplib2
from apiclient.discovery import build
from oauth2client.file import Storage
from oauth2client.client import OAuth2WebServerFlow, FlowExchangeError

FLOW = OAuth2WebServerFlow(
  client_id='####',
  client_secret='####',
  scope='https://www.googleapis.com/auth/tasks',
  user_agent='gtask-client/1.0')

storage = Storage('tasks.dat')
credentials = storage.get()
if credentials is None or credentials.invalid == True:
  authorize_url = FLOW.step1_get_authorize_url('oob')
  print 'Go to the following link in your browser:'
  print
  print '    ' + authorize_url
  print
  code = None
  code = raw_input('Enter verification code: ').strip()
  try:
    http = httplib2.Http(proxy_info = httplib2.ProxyInfo(httplib2.socks.PROXY_TYPE_HTTP, '####', 8080))
    credential = FLOW.step2_exchange(code, http)
  except FlowExchangeError, e:
    sys.exit('Authentication has failed: %s' % e)
  storage.put(credential)
  credential.set_store(storage)  
  credentials = credential

http = httplib2.Http(proxy_info = httplib2.ProxyInfo(httplib2.socks.PROXY_TYPE_HTTP, '####', 8080))
http = credentials.authorize(http)

service = build(serviceName='tasks', version='v1', http=http,
                developerKey='####')

tasklists = service.tasklists().list().execute()

for tasklist in tasklists['items']:
  print tasklist['title']