2014/03/10


Twitter / ymmt2005: むう、mime/multipart の ...

むう、mime/multipart の CreateFormFile の Content-Type は application/octet-stream 固定になっている。泣ける。。#golang https://code.google.com/p/go/source/browse/src/pkg/mime/multipart/writer.go#128

https://twitter.com/ymmt2005/status/431143170659717120
ファイルから multipart.CreateFormFile を呼ぶと io.Writer が返ります。この writer は隠ぺいされているのでパートのヘッダを書き換える事は出来ません。
この場合は multipart.CreatePart を使います。
package main

import (
    "bytes"
    "io"
    "log"
    "mime/multipart"
    "net/textproto"
    "os"
)

func main() {
    var b bytes.Buffer
    w := multipart.NewWriter(&b)
    part := make(textproto.MIMEHeader)
    part.Set("Content-Type""application/vnd.ms-excel")
    part.Set("Content-Disposition"`form-data; name="file"; filename="Foo.xlsx"`)
    pw, err := w.CreatePart(part)
    if err != nil {
        log.Fatal(err)
    }
    f, err := os.Open("Foo.xlsx")
    if err != nil {
        log.Fatal(err)
    }
    io.Copy(pw, f)
    w.Close()

    b.WriteTo(os.Stdout)
}
Posted at by



2014/02/19


最強というか、正直懐かしい感じではありますが...
まず mpd と mpc と podget を入れましょう。
$ sudo apt-get install mpd mpc podget そして ~/.podget/serverlist に rebuild.fm を足しましょう。
http://feeds.rebuild.fm/rebuildfm Rebuild crontab で自動起動します。
0 0 * * * /usr/bin/podget -s Ubuntu の場合 /usr/lib/mpd にファイルを置く事になるので
$ sudo usermod -aG audio `whoami` として書き込み権限を得た後
$ sudo ln -s ~/POD/Rebuild /usr/lib/mpd/Rebuild シンボリックリンクを張りましょう。
次に mpd のインデックスを自動更新にしましょう(コメントを外す)。
auto_update "yes" これだけで Linux や OSX 環境では聞ける様になったので Music Player Daemon プロトコル対応のプレーヤさえ探してくれば再生出来ますし、mpd なので何処からでも誰でも(パスワード設定可能)音楽を鳴らせます。mpd はサーバで音を鳴らす代物なので会社のBGMサーバなんかにいいんじゃないかなーとか思います。
また audio_output を httpd にすればストリーミング配信出来るので別の端末でも再生出来ます。 audio_output {
    type        "httpd"
    name        "My HTTP Stream"
    encoder     "vorbis"        # optional, vorbis or lame
    port        "8000"
    #quality        "5.0"           # do not define if bitrate is defined
    bitrate     "128"           # do not define if quality is defined
    format      "44100:16:1"
}
こうしておけば http://localhost:8000/mpd.ogg でストリーミング再生出来ますし、bind_to_address をネットワークアドレスに設定して MPDroid 入れれば、いつでもどこでも Rebuild.fm が聞けますね。この環境、一度作っておくと上記の mpd のフォルダに適当に mp3 ファイルを放り込んでおけば自宅を出ても MPDroid で聞ける様になります。

Rebuild.fm 関係ないですねそうですね。


ちなみに...

golang で rebuild.fm クライアント書いてますんで、使いたい人はどうぞ。
mattn/rebuildfm - GitHub
https://github.com/mattn/rebuildfm
あと vim 版もあります。
mattn/ctrlp-rebuildfm - GitHub
https://github.com/mattn/ctrlp-rebuildfm
Posted at by




大量にあるファイルのファイル名を一括で変更する場合、どうしても GUI での操作であったりマッチパターンを書くのが面倒だったりしましたが、massren を使えば誰でも簡単にファイル名の一括置換が出来る様になります。
laurent22/massren - GitHub

massren - Easily rename multiple files using your text editor

https://github.com/laurent22/massren
お気に入りのテキストエディタを使って、好きな様にファイル名を変更出来ます。サポートしているOSは Windows, Linux, OSX です。中身は golang で書かれています。
それぞれバイナリが用意されているので自分でビルドする必要はありません。Linux と OSX の人はリンク先にある手順を、Windows の人は専用ページからダウンロード出来ます。
起動する前にエディタを設定しましょう。 $ massren --config editor vim そしてファイル名を一括変更したい場所に移動して massren を起動します。エディタ内にファイルの一覧が書かれているので、vim やお気に入りのテキストエディタで好きな様に編集します。
最後に書き込んでエディタを終了すればファイル名が変更されています。
massren
Windows であれば $ massren /n OSX や Linux では $ massren -n で dry-run モードで起動出来ます。また引数にディレクトリやワイルドカードなファイル名も指定出来ます。
めちゃめちゃ便利ですね。
Posted at by