2015.01.13 Development, Graphic

h800

1/10くらいになってやっと年賀状書いてたわけですが、作ろうと思った案を途中まで作ってイラレで並べるのが面倒になってSVG/JSで作りました。
フラクタル羊。ジェネラティブ年賀状。

手順はこんな感じ。

  1. 手書きラフ書いて
  2. スキャンしてイラレでパス化して適当に塗る
  3. SVGで保存
  4. JSでプログラム書いてフラクタル生成
  5. パラメータ調整していいかんじにしてSVGで保存
  6. イラレで取り込んで、色調整して、背景つけて、文字入れて、仕上げ

せっかくなんで若干いじって、生成過程を見れるようにしてみた。

デモ。アップもしてみた。ソースはきれくとかしてない。
http://ikekou.jp/projects/fractal-sheeps/

できたーとおもって印刷しようと思ったら家のプリンタ(年代モノ)がぶっこわれたので諦めてキンコーズで印刷してたんですけど、家のインクジェットプリンタでやるよりずっといい。まあそりゃそうだ。ただフチなしはできないらしいので、印刷して送ったやつは若干デザイン変えてる。

それでも、印刷位置を0.5ミリ左にお願いします、、、とか何回も面倒くさいこと(キンコーズでそんな細かい事言うなよって話だ)言ってもちゃんと親切に対応してくれたのでむっちゃありがたかった。キンコーズありがとう。

今年もなにとぞ、よろしくお願いいたします。
よく遊び、よく作る。2015年のテーマかな。
楽しいこと、今までと違うこと、もっといっぱいやってきたいなー。

2014.07.07 Development

“Home Control”とか大げさなタイトルだけどIRKitの話でもなくiOS Homekitの話でもなくて、
使おうとおもって買ったもののタイミングを逃して使わず家に転がっていた
DMXディマーパックを使ってAlfredで電気製品をオンオフしてみたっていうだけの話だったりする。

1. やろうとしたこと

Alfred(Macの多機能ランチャー)から電気とかサーキュレーターとかをオンオフする。
“home-run”で電源オン。”home-stop”で電源オフする。

2. 準備したモノ

ELATION DP-415 (DMX Dimmer Pack)
ENTTEC DMX USB Pro (USB => DMX Converter)
Mac

3. 使ったソフトウェア

Alfred (Power pack)
Max/MSP
iTerm

4. 構成

Alfred => (UDP Socket) => Max/MSP => (DMX) => DMX USB Pro => (DMX) => DMX Dimmer Pack => 電気製品

5. セットアップ

DMX USB Proのドライバ入れたりする。細かくは忘れた。

6. Alfredでやったこと

AlfredでComnmandを叩くWorkflowを作る。run用とstop用を2つ。
スクリーンショット 2014-07-07 17.34.34

macに最初から入ってるcuコマンドを使って、AlfredからMaxの間はUDPで通信する。

cu -z -u 127.0.0.1 50001;exit

キックするだけだから値もナシで、-zにしてる。
あとAlfredでコマンド叩くとterminalが一枚立ち上がってそのままになるからexitで閉じる。
ってどっかに書いてあってそうしてみたんだけど閉じなくて、iTermなら閉じてくれたからAlfredから起動するTerminalソフトをiTermにした。
Terminalでもexitで閉じるようにきっとなんか設定があるんだとおもう。

7. Max/MSPでやったこと

ビルトインのコンポーネントだと”udpreceive”があるけど正しくOSCフォーマットでないとはじかれる。
今回の用途だととりあえずキックできればいいしコマンドラインでOSCをどうやって送ればいいかわからなかったから
普通にUDPを扱えるexternalのsadam.udpReceiverを使う。
50001番ポートがキックされたらrun、50002番ポートがキックされたらstopということにする。(ほんとは同じポートで受け取った値で分岐すればいいと思う)
dmxusbproのexternalは無料だと2チャンネルまで、有料だともっと使えるみたいだけど今回はとりあえず無料でよいのでそのまま。
getdevsしたあとopenのmessageにシリアルポート名を直接打ってる。ここなんかいい感じにしたい。
dmxusbproに入力するのは0が最小、255が最大だから、オンオフみたいだからそれで電源をオンオフする。
スクリーンショット 2014-07-07 17.52.22

8. DMX USB Pro ~ DMX Dimmer Pack ~ 電気製品の間でやったこと

ここはもう特になにもやってなくて
dmxusbproのexternalがDMXをDMX USB Proに送ってくれて、そっからDP-415に送ってくれて、そしたら調光してくれる。

できあがりは冒頭の動画。

調光だからほんとは段階的に制御できるんだけど、サーキュレーターは中間の回転速度で異音がするし、
PWMじゃないから(だよね?)LED電球パっとついてパっと消えるし、やめた。
何動かしたら面白いかなー。

おわり。

2014.05.04 Development, Graphic, Lab

スクリーンショット 2014-05-04 03.47.33

Snap.svgてのを見かけて試してみた。
Raphaelにどうも似てるなと思ったらそもそも同じ人が作ってるらしい。
pathメソッドのRが、ASでは自前計算してたスムーズな連続カーブを描いてくれるからうれしい。
あと色系のメソッド便利。

View

2014.04.24 Development

前回は「ラムネマンゴーココナッツパフェ」をmecabが単語に分けてくれない、という問題が未解決。

mecabのオプションでそれっぽいのがないかなと見てみる。

$ mecab -h

を見ながらそれっぽいのを探してみたが、–levelがそれっぽいかなと思ったけど違う感じだし、–level 1と2で–margnalとか–nbest使ったら?って言われるからそっちも試してみるが正直うまくいかない。ラムネマンゴーココナッツパフェはラムネマンゴーココナッツパフェのまま。

そこで色々調べているとChasenとKakasiとMeCabの形態素解析・わかち書きの比較っていうサイトが出て来て、ブラウザ上でそれぞれを試せるのだけど、Chasenならラムネマンゴーココナッツパフェを分割できることが確認できたのでChasenを次は入れてみる。

mecabは保留。

2014.04.17 Development

前の記事でmecabとmecab-pythonをmacに入れてみたので、csvファイルを読んでmecabにかけてみる。

csvは普通にexcelで作る。こんなかんじでいいや。
data.csvという名前で保存した。

id,name
1,すもももももももものうち
2,いちごパイカスタードパフェ
3,ラムネマンゴーココナッツパフェ

あとはcsv読み込んでmecabかけるpythonを書く。
pythonは正直あんまりわかってないから間違ってるかもしれないけど、一応動く。

#!/usr/bin/python
# -*- coding: utf-8 -*-

import MeCab
import csv

csvFile=open('data.csv','rU')

csvFile.next() # 先頭行は今回見出し行だから飛ばす

csvReader=csv.reader(csvFile)
for row in csvReader:
    rowId=row[0]
    sentence=row[1]

    print '-'
    print 'id : '+rowId
    print 'sentence : '+sentence
    try:
        t=MeCab.Tagger()
        m=t.parseToNode(sentence)
        while m:
            if m.surface=='':
                m=m.next
                continue

            print 'surface : ' + m.surface
            print 'feature : '+m.feature
            m = m.next
    except RuntimeError, e:
        print "RuntimeError:", e;

実行する。

$ python example.py
-
id : 1
sentence : すもももももももものうち
surface : すもも
feature : 名詞,一般,*,*,*,*,すもも,スモモ,スモモ
surface : も
feature : 助詞,係助詞,*,*,*,*,も,モ,モ
surface : もも
feature : 名詞,一般,*,*,*,*,もも,モモ,モモ
surface : も
feature : 助詞,係助詞,*,*,*,*,も,モ,モ
surface : もも
feature : 名詞,一般,*,*,*,*,もも,モモ,モモ
surface : の
feature : 助詞,連体化,*,*,*,*,の,ノ,ノ
surface : うち
feature : 名詞,非自立,副詞可能,*,*,*,うち,ウチ,ウチ
-
id : 2
sentence : いちごパイカスタードパフェ
surface : いちご
feature : 名詞,一般,*,*,*,*,いちご,イチゴ,イチゴ
surface : パイカスタードパフェ
feature : 名詞,一般,*,*,*,*,*
-
id : 3
sentence : ラムネマンゴーココナッツパフェ
surface : ラムネマンゴーココナッツパフェ
feature : 名詞,固有名詞,組織,*,*,*,*

動いた。

動いたけど、あんまり分解できてないのがわかる。
「すもももももももものうち」はきっちり分解できてるけど、「いちごパイカスタードパフェ」は「いちご」と「パイカスタードパフェ」にしかわけれてない。パイカスタードパフェっていう一般名詞は無いと思うけど辞書に入ってるのかな。
「ラムネマンゴーココナッツパフェ」に至っては1個の固有名詞ってことになってる。

これではイマイチ。
次はmecabのオプションを見てみよう。細かく分ける方法があるかも。

2014.04.14 Development, Lab

GoProをプログラムから制御してみた。GoProはHero3 plus black edition。Macは10.9.2。

ライブラリを調べてみる。
pythonのライブラリ
https://github.com/joshvillbrandt/GoProController
Node.jsのライブラリ
https://www.npmjs.org/package/gopro
が出て来た。

pythonはmacに最初から入ってるから、と思って動かしてみるけど何かライブラリが足りないっぽくてエラー出るし、作者はUbuntuで動くようにしか作ってないみたいだし、頑張ってMacで動くようにする前にNodeのほうを試す。
Node.jsは前に入れたのが入ってるし。

nodeモジュールをインストールする。

$ npm install gopro

exampleフォルダには、4つくらいサンプルがあるから動かしてみる。

$ cd node_modules/gopro/examples
$ node status.original.js
http://10.5.5.9/bacpac/se?t=jambikassu
ReferenceError: body is not defined

エラーが出た。

status.jsを開いて見るとパスワードを入れる必要があるみたいので書き換える。

var cam = new Camera('10.5.5.9', 'mypasswd')

new Camera()の第2引数を自分でgoproに設定したwifiパスワードに書き換える。

再度実行。

$ node status.js
http://10.5.5.9/bacpac/se?t=kosegopropasswd
status byte 0 0
status byte 1 100
status byte 2 1
status byte 3 0
status byte 4 4
status byte 5 0
status byte 6 65533
status byte 7 0
status byte 8 82
status byte 9 1
status byte 10 0
status byte 11 1
status byte 12 11
status byte 13 2
status byte 14 1
status byte 15 1
camera status { ready: true }

正常なステータスが帰って来てるっぽい。

ここまでは簡単だったので他のサンプルも動かしてみる。

2014.04.02 Development

日本語形態素解析をしてみたい、ということでMacにMeCabとmecab-pythonを入れた。

環境はMac OS X 10.9.2 Marvericks
MeCabは0.996

macportsとかhomebrewとかは今回は無し

1 MeCabのインストール

http://mecab.googlecode.com/svn/trunk/mecab/doc/index.html#download
でダウンロードURLを確認

$ cd ~/Downloads
$ curl -O https://mecab.googlecode.com/files/mecab-0.996.tar.gz
$ tar zxfv mecab-0.996.tar.gz
$ cd mecab-0.996
$ ./configure
$ make
$ make check

2 MeCab用の辞書のインストール

http://mecab.googlecode.com/svn/trunk/mecab/doc/index.html#download
でダウンロードURLを確認

$ cd ~/Downloads
$ tar zxfv mecab-ipadic-2.7.0-20070801.tar.gz
$ cd mecab-ipadic-2.7.0-20070801
$ ./configure --with-charset=utf8
$ make
$ sudo make install

3 MeCabのインストール確認

$ mecab
すもももももももものうち
すもも	名詞,一般,*,*,*,*,すもも,スモモ,スモモ
も	助詞,係助詞,*,*,*,*,も,モ,モ
もも	名詞,一般,*,*,*,*,もも,モモ,モモ
も	助詞,係助詞,*,*,*,*,も,モ,モ
もも	名詞,一般,*,*,*,*,もも,モモ,モモ
の	助詞,連体化,*,*,*,*,の,ノ,ノ
うち	名詞,非自立,副詞可能,*,*,*,うち,ウチ,ウチ
EOS

いけた

4 mecab-pythonのインストール

https://code.google.com/p/mecab/downloads/list
でダウンロードURLを確認

$ curl -O https://mecab.googlecode.com/files/mecab-python-0.996.tar.gz
$ tar zxfv mecab-python-0.996.tar.gz
$ cd mecab-python-0.996

READMEを読む

$ python setup.py build
$ su
$ python setup.py install

とあるのでやる

error: command 'cc' failed with exit status 1

とか言われるのでググる
MarvericksにしてPILのインストールがコケる件 – Qiita http://qiita.com/noblejasper/items/797849a6c3c603016166

xcode-select --install

をする、なおらず

mecab-pythonをMacにインストールする – Qiita http://qiita.com/wwacky/items/e1e3b7cbfa3c4da4d877
を見る

$ export CFLAGS=-Qunused-arguments
$ export CPPFLAGS=-Qunused-arguments

をするとよいようだ(内容はわかってない、とりあえずやってみる)

$ python setup.py build
$ python setup.py install

いけた

5 mecab-pythonのテスト

mecab-python-0.996にtest.pyがあるのでそれを実行する

$ python test.py
0.996
太郎	名詞,固有名詞,人名,名,*,*,太郎,タロウ,タロー
は	助詞,係助詞,*,*,*,*,は,ハ,ワ
この	連体詞,*,*,*,*,*,この,コノ,コノ
本	名詞,一般,*,*,*,*,本,ホン,ホン
を	助詞,格助詞,一般,*,*,*,を,ヲ,ヲ
二	名詞,数,*,*,*,*,二,ニ,ニ
郎	名詞,一般,*,*,*,*,郎,ロウ,ロー
を	助詞,格助詞,一般,*,*,*,を,ヲ,ヲ
見	動詞,自立,*,*,一段,連用形,見る,ミ,ミ
た	助動詞,*,*,*,特殊・タ,基本形,た,タ,タ
女性	名詞,一般,*,*,*,*,女性,ジョセイ,ジョセイ
に	助詞,格助詞,一般,*,*,*,に,ニ,ニ
渡し	動詞,自立,*,*,五段・サ行,連用形,渡す,ワタシ,ワタシ
た	助動詞,*,*,*,特殊・タ,基本形,た,タ,タ
。	記号,句点,*,*,*,*,。,。,。
EOS

 	BOS/EOS,*,*,*,*,*,*,*,*
太郎 	名詞,固有名詞,人名,名,*,*,太郎,タロウ,タロー
は 	助詞,係助詞,*,*,*,*,は,ハ,ワ
この 	連体詞,*,*,*,*,*,この,コノ,コノ
本 	名詞,一般,*,*,*,*,本,ホン,ホン
を 	助詞,格助詞,一般,*,*,*,を,ヲ,ヲ
二 	名詞,数,*,*,*,*,二,ニ,ニ
郎 	名詞,一般,*,*,*,*,郎,ロウ,ロー
を 	助詞,格助詞,一般,*,*,*,を,ヲ,ヲ
見 	動詞,自立,*,*,一段,連用形,見る,ミ,ミ
た 	助動詞,*,*,*,特殊・タ,基本形,た,タ,タ
女性 	名詞,一般,*,*,*,*,女性,ジョセイ,ジョセイ
に 	助詞,格助詞,一般,*,*,*,に,ニ,ニ
渡し 	動詞,自立,*,*,五段・サ行,連用形,渡す,ワタシ,ワタシ
た 	助動詞,*,*,*,特殊・タ,基本形,た,タ,タ
。 	記号,句点,*,*,*,*,。,。,。
 	BOS/EOS,*,*,*,*,*,*,*,*
EOS
EOS
filename: /usr/local/lib/mecab/dic/ipadic/sys.dic
charset: utf-8
size: 392126
type: 0
lsize: 1316
rsize: 1316
version: 102

できた

2012.05.26 Development

karadameguricha-damehirosue

からだ巡茶のコンテンツで「ダメ広末」というのがあるというのを昨日発見。
広末涼子がひたすら「ダメ」と言う動画が70本もあるぶっとんだコンテンツ。
広末涼子「ダメ」と言われるということ、そしてその広末自身も微妙に美しきダメさを醸し出してること。
これはすごい。なんかすごい。
この提案通した人凄いしOKしたクライアントも素敵だ。

で、Facebookでシェアしたときに@chabudaiが「ずっと見てたら精神的に不安定になりました」と言うので、
今日朝起きてふと思って、これずっと見てたらいいんじゃないかってことでずっと見てられるものを作った。

ENDLESS DENIED

機能はふたつだけ、
http://apps.ikekou.jp/endless-denied/にアクセスする
・ひたすら順番に動画が流れダメと言われる
・ その際にURLが動画毎に変わる(http://apps.ikekou.jp/endless-denied/#29みたいな)
・お気に入りのダメがあったら即リロード、または番号つきのURL(http://apps.ikekou.jp/endless-denied/#29みたいな)でアクセスしなおすとそのダメだけひたすら流れる

まあ要はハッシュがついてたらそれだけループ、ついてなかったらシーケンシャルにループ、っていうだけなんだけど。
ということで広末涼子にお気に入りのダメをひたすら言われ続けることができます。
一部の人には嬉しい、かもしれない。
あと確かに 作ってる間1時間くらいずっとダメって言われ続けてこれは病むなと思った。あと広末かわいい。

2012.05.12 Development

Google Readerの増えすぎた購読フィードを整理したい。がどれを解除していいか判断がつかない僕のために。

僕は今でもできるだけ毎日Google Readerに目を通しているのだけど、どうにも効率が低下している気がしていた。
基本的に登録はするが削除はしないのでそのせいかもしれない。

そこでふとGoogle ReaderのAPI(非公認)があったのを思い出して、使ってみたかったというのもあって、購読解除してもいいかもしれないフィードを見つけるコードを書いてみた。ついでにTwitter Bootstrapも使ってみたかったので使ってみた。

とはいっても、Google Readerの既読アイテム直近1000件(ほんとはもっと取得したかったのだけど1000件以上取得する方法がぱっとわからなかった)から単純に既読数とスター数の割合で、たくさん読んでるのにちっともスターがついてないフィードはもしかしていらないんじゃない?という風に並べているだけ。かっこいいアルゴリズムとかは現状ない。

Google Reader上に「トレンド」というやつがあってスター率が高いフィードなんかは見れるのだけどその逆は見れない。

ちなみに今やTwitterやFacebookでおなじみOAuthは実装されていないので昔ながらのID/Passwordを入力する方法しかなく、OAuthに慣れた人間からしたら怪しいことこの上ない。もし自分だったらあんまり入力したくない、、、がGoogleが実装していない以上しょうがない。
もちろん悪用する気はないし保存もしてないしセッションにすら入れてない(それはただやらんかっただけだけど)けどそこは信用してもらうしか術がない気がする。市井のサービスはそこってすごい壁だな。それかもしかしたらまだ案外気にせず入力してしまう人も多いのか。

使うとこんな感じ。
僕の場合Newsweekを読んでるけど全然ふぁぼってないから、賢い気分になる自己満足はやめて購読解除しちゃえば?ってことになる。キャプチャだとスターが0ばっかりだけどそれは見えてないだけでもうちょっと下に行くとほんとはある。

Google Never Reader

ちなみに削除ボタンを押すと購読解除して見た目上も削除するけど、データソースとして使っている既読アイテムの履歴からは削除されないからリロードするとまた舞い戻ってしまう仕様。一週間に一度とか都度いらなそうなフィードを削除して最適化していくといいかもしれない。
仕様はそのうちなんとかするかもしれない。

アプリはこちら。Neverの使い方が微妙に間違ってないか、とかは知らない。
Google Never Reader

2011.12.07 Development

Facebook Friendlist Manager 2
Facebookでフレンドリスト(発言の公開範囲を設定するグループ)を細かく設定するのに公式のUIはあまり向いてないです。一人一人設定していかないといけない。
Google+のはそこらへんやりやすくていいなーと思ったので、作りました。

Facebook FriendList Manager

Functions

まず前提として用語説明。
フレンド=普通に友達のことです。
フレンドリスト=友達のグループ、リスト。発言の公開範囲を選ぶ時に、選択肢に出るやつです。

機能は
・フレンドリストの作成
・フレンドリストの削除
・ユーザーのフレンドリストへの追加
・ユーザーのフレンドリスト除外
です。
フレンド自体を削除したりとかはないです。

Usage

使い方は
Facebook Friendlist Manager 1
とりあえずJOINを押します。でそしたら承認しますかみたいなのが出るので承認します。
Facebook Friendlist Manager 3
左から順に、表示するフレンドリストを選択して、表示されたフレンドから処理対象フレンドを選択、次に処理対象のフレンドリストを選択して、最後に追加or除外を押す。
対象フレンドと対象フレンドリストは複数選択可。jQueryUIのお陰でドラッグでも選択できます。あとCtrl押しながらで複数選択できます。(一番やりたかったのは結局これ)(Windowsで上手く動いてないみたい。jQueryUI使っただけなので謎ですが気が向いたら直します。)
だから10人選んで、それをリストAとリストBに追加とか、その逆とか、できます。
Facebook Friendlist Manager 4
あとは左から三番目の処理対象フレンドリストの下に、フレンドリストの追加ボタンと、選択中のフレンドリストの削除ボタンあり。
フレンドリストの削除だけは間違って消しちゃうと悲しいので、確認ダイアログあり。気をつけて!

英語の成績は学生時代惨憺たるものだったので英語は多分おかしいけど、なんとなく伝わればまあいいです。

Notes

注意事項。
僕はフレンドが120人くらいしかいないので普通に使えてますけど、フレンドがめっちゃ多い人が使ったら多分止まります。何人くらいからやばいか不明。
リストからのフレンドの追加・除外処理は600件くらいまとめて(120人を5つのリストに追加)やっても大丈夫でしたけど、何件くらいからやばいか不明。
ブラウザチェックはMacのFirefox,Chrome,Safariの最新しかしてないです。IE?なにそれ。
止まったらリロードしてね。

一応免責。
このアプリを使って生じたいかなる損害も、その責任は負えませんのでご了承の上でご使用ください。

これでみなさんも今日から快適な陰口ライフを!

Facebook FriendList Manager

あ、キャプチャとるにあたって、嫁に内緒でFacebookやってたりしなさそうな、載せて大丈夫そうな方を選びましたが、問題あったらこっそり連絡ください。すぐ修正します。

More