OS X 10.9 Mavericks 上での Go インストール方法。CotEditor 用 Go 言語シンタックスカラーリング定義ファイル Go.plist と Go で作った初めてのプログラム zlist.go 公開。

iPhone 6、iPhone 6 Plus が発売され、10月16日10時 (現地時間) のスペシャルイベントでは、新型iPadMacOS X Yosemite も発表されました。特に、27 インチ iMac Retina 5K ディスプレイモデルは、15インチMacBook Pro Retina ディスプレイモデルを所有していなかったら、すぐにでも手に入れたいですね!

OS X 10.10 Yosemite も、早速 MacBook Pro Retina にインストールしました。ただし、残り1分の表示から1時間かかりました。Homebrew などで /usr/local にデータをインストールしていると残り1分の表示から1、2時間かかるようです。

もうすぐ iOS 8.1 も公開されます。拙作 iYKRSS は、iPhone 6、 iPhone 6 Plus に対応する予定です。しばらくお待ちください。

Docker - Build, Ship, and Run Any App, Anywhere
https://www.docker.com/

Linux コンテナ管理ソフトウェア Docker の開発に使用されているプログラミング言語 Go に以前から興味を持っていました。

Amazon で洋書を探してみると

Programming in Go: Creating Applications for the 21st Century (Developer's Library)

Programming in Go: Creating Applications for the 21st Century (Developer’s Library)

  • 作者: Mark Summerfield
  • 出版社/メーカー: Addison-Wesley Professional
  • 発売日: 2012/05/04
  • メディア: ペーパーバック
  • クリック: 1回
  • この商品を含むブログを見る
Programming in Go: Creating Applications for the 21st Century (Developer's Library) [Kindle Edition]
Mark Summerfield (Author)

上記本が良さそうなので購入してみました。読み終えた感想は、struct フィールドの tags 利用方法、defer の解説など説明不足のところもあります。結局、

Documentation - The Go Programming Language
http://golang.org/doc/
References

を参照したり、Go のパッケージソースを参考にしました。

Mac に Go をインストール方法は、2通りあります。(残念ながら OS X 10.9 Mavericks 上での説明になります。)

最初は、

Homebrew — The missing package manager for OS X
http://brew.sh/

Homebrew を使って、

$ brew install go	

上記コマンドを実行してインストールする方法です。

.bash_profile ファイル

export GOPATH=$HOME/go
export GOROOT=/usr/local/opt/go/libexec
export PATH=$PATH:$GOPATH/bin:$GOROOT/bin

に上記内容を追加してください。

$GOPATH は、

~ $ go get -u github.com/jessevdk/go-flags

上記コマンド go get を使って、github にあるパッケージをインストールするフォルダを指定するのに使います。この場合 go-flags パッケージを $GOPATH にインストールしています。go-flags を利用するには、ソースに

import (
"github.com/jessevdk/go-flags"
)

上記のように import 宣言する必要があります。

後、コマンド godoc をインストールするには mercurial が必要なので

~ $ brew install hg

上記コマンドで hg をインストールしてください。

~ $ go get code.google.com/p/go.tools/cmd/godoc

上のコマンドを実行すると $GOROOT/bin に godoc コマンドがインストールされます。godoc の使い方は

~ $ godoc fmt

この場合は fmt パッケージのドキュメントが表示されます。Safari などでドキュメントを見たい場合は、

~ $ godoc -http=:8080

上記コマンドを実行し、Safarihttp://localhost:8080 にアクセスしてください。

コマンド vet は

~ $ go get code.google.com/p/go.tools/cmd/vet

上記のようにインストールしてください。

$ go vet zlist.go

vet 単独コマンドではなく、上記のように利用してください。

基本的に Go では import するパッケージは $GOPATH/src に置くことになります。

export GOPATH=$HOME/go:$HOME/Desktop/Book\ Sample/goeg

のように : で分けて複数のパスを宣言することもできます。

export GOPATH=path

なら

path/ + src/ + shaper1/   + shape1.go
|            |
|            + shapes/        + shapes.go
|
+ safemap/   + safemap.go 

main プログラム shape1.go から shapes/shapes.go、safemap/safemap.go パッケージを利用するには

import (
"shaper1/shapes"
"safemap"
)

と宣言する必要があります。もちろん、main プログラムが $GOPATH 以外にあるときもパッケージを利用するには、上記のように宣言します。

もう一つの Go のインストール方法は、

Getting Started - The Go Programming Language
http://golang.org/doc/install

を参考に

Downloads - The Go Programming Language
https://golang.org/dl/

から、

go1.3.3.darwin-amd64-osx10.8.tar.gz	Archive	OS X 10.8+	64-bit
go1.3.3.darwin-amd64-osx10.8.pkg	Installer	OS X 10.8+	64-bit

上記バイナリパッケージ、どちらかをダウンロードし、

go1.3.3.darwinamd64-osx10.8.tar.gz の場合、ターミナルで

~ $ tar -C /usr/local -xzf ~/Downloads/go1.3.1.darwin-amd64-osx10.8.tar.gz 

上記コマンドを実行してインストールしてください。

go1.3.3.darwin-amd64-osx10.8.pkg	Installer	OS X 10.8+	64-bit

go1.3.3.darwinamd64-osx10.8.pkg の場合は、Finder 上でダブルクリックしてインストールしてください。

.bash_profile に

export GOPATH=$HOME/go
export GOROOT=/usr/local/go
export PATH=$PATH:$GOPATH/bin:$GOROOT/bin

を設定してください。バイナリパッケージは /usr/local/go にインストールされます。

Go についての感想は、すべてのオブジェクトを interface{} で表したり、クラスや継承がサポートされなかったり、また、ソースや Reference の読み方に慣れるまで苦労しました。

struct フィールドの tags の理解するのにパッケージソースを参考にしました。パッケージのソースは $GOROOT/src/pkg にあります。

tags の理解には、$GOROOT/src/pkg/reflect/type.go の

763行目
func (tag StructTag) Get(key string) string {

が参考になります。

peco/peco · GitHub
https://github.com/peco/peco
Bash - pecoの基礎の基礎 - Qiita
http://qiita.com/xtetsuji/items/05f6f4c1b17854cdd75b

上記サイトも Go プログラミングがどんなものか理解するのに役立ちました。

Go のパッケージソースにメモを付けたいので、必要なソースを PDF 化する時に CotEditor

CotEditor -Text Editor for OS X
http://coteditor.github.io/

を利用しました。PDF 書類にメモを書き込むには、Apple 純正の ‘プレビュー’ を使っています。Go の文法をハイライトするために、Go のシンタックスを色分けするシンタックスカラーリング定義ファイル Go.plist を作成しました。Go で初めて作ったプログラム zlist.go と一緒に下記 URL

CotEditor 用の Go 言語シンタックスカラーリング定義ファイル Go.plist と
Go で作った初めてのプログラム zlist.go 公開。
http://kyoshiaki.sakura.ne.jp/osx/Sample/go_example.zip

で公開します。メニュー/CotEditor/環境設定の ‘フォーマット’ タブで

上図のようにウインドウ一番下、中央のギアアイコンから、’読み込み…’ を選択し、上記 URL に含まれる Go.plist を選んでください。

シンタックスカラーを Xcode に近づけるため

上図のようにシンタックスカラーリングを変更すると見やすくなります。

いろいろなテキストエディタシンタックスカラーリングファイルは

$GOROOT/misc

にあります。

以前は、ソースの PDF 化には、mi

mi - テキストエディタ
http://www.mimikaki.net/

を使っていたのですが、デフォルトのシンタックスカラーリング対応言語が少ないのであきらめました。また、Mac App Store から Jedit X Plus を購入して使用しているのですが、’メニュー/ファイル/ページ設定…’ で拡大縮小を設定し、’メニュー/ファイル/プリントで PDF 化する’ を選択すると、ページごとに縮小してしまい、思ったように縮小してくれません。その点、CotEditor は、全体を問題なく縮小してくれます。

シンタックスカラーリング作成には Kate の go.xml が参考にしやすいです。XcodeVim、Kate などいろいろ試しましたが、PDF 化には CotEditor が一番使いやすいです。

Xcode の場合、

$GOROOT/misc/xcode/4/go4xcode.sh

を実行すれば良いのですが、Mac App Store から Xcode をダウンロードした場合、Xcode の所有権が root になっています。Homebrew を使って Go をインストールした場合は、go4xcode.sh ファイルの先頭、 set -e の後に

GOROOT=/usr/local/opt/go/libexec

を追加し、また、バイナリパッケージを使ってインストールした場合は、

GOROOT=/usr/local/go

を追加してください。その後、下記のように sudo ./go4xcode.sh を実行してください。

~ $ cd $GOROOT/misc/xcode/4
/usr/local/opt/go/libexec/misc/xcode/4 $ sudo ./go4xcode.sh
Password:
Backing up plugindata file (copied to DVTFoundation.xcplugindata.bak).
Adding Go language specification entry.
Installing Go language specification file for Xcode.
Run 'sudo rm -rf /var/folders/*' and restart Xcode to update change immediately.
Syntax coloring must be manually selected from the Editor - Syntax Coloring menu in Xcode.
/usr/local/opt/go/libexec/misc/xcode/4 $ 

上記説明にあるように、

/usr/local/opt/go/libexec/misc/xcode/4 $ sudo rm -rf /var/folders/*

を実行し、Xcode を起動します。
Xcode で Go のソースファイルを開いた後、メニュー/Editor/Syntax Color/Go を選ぶとシンタックスがカラーリングされます。Go ファイルを開いても自動でカラーリングされないので注意してください。

Vim の場合、

macvim - Vim for the Mac - Google Project Hosting
https://code.google.com/p/macvim/

ターミナル上で vim を使用するのも良いのですが、折角なので、上記 URL から MacVim をダウンロードしました。設定は共通のようです。

インストールされた Go の

$GOROOT/misc/vim/syntax/go.vim 

にある go.vim

~/.vim/ftdetect/go.vim:

にコピーするとシンタクスカラーリングされます。

しかし、Vim には、プラグイン管理ツール neobundle.vim があるので、こちらを利用する方がお勧めです。

Shougo/neobundle.vim · GitHub
https://github.com/Shougo/neobundle.vim

インストールするには

~ $ curl https://raw.githubusercontent.com/Shougo/neobundle.vim/master/bin/install.sh | sh

を実行し、スクリプトを実行すると下記内容

Please write NeoBundle initial setting to your vimrc path ...
"NeoBundle Scripts-----------------------------
if has('vim_starting')
set nocompatible               " Be iMproved
" Required:
set runtimepath+=/Users/yoshiaki/.vim/bundle/neobundle.vim/
endif
" Required:
call neobundle#begin(expand('/Users/yoshiaki/.vim/bundle'))
" Let NeoBundle manage NeoBundle
" Required:
NeoBundleFetch 'Shougo/neobundle.vim'
" My Bundles here:
NeoBundle 'Shougo/neosnippet.vim'
NeoBundle 'Shougo/neosnippet-snippets'
NeoBundle 'tpope/vim-fugitive'
NeoBundle 'kien/ctrlp.vim'
NeoBundle 'flazz/vim-colorschemes'
" You can specify revision/branch/tag.
NeoBundle 'Shougo/vimshell', { 'rev' : '3787e5' }
" Required:
call neobundle#end()
" Required:
filetype plugin indent on
" If there are uninstalled bundles found on startup,
" this will conveniently prompt you to install them.
NeoBundleCheck
"End NeoBundle Scripts-------------------------

が表示されます。

"NeoBundle Scripts-----------------------------

の次の行から

"End NeoBundle Scripts-------------------------

の上の行まで、ファイル .vimrc としてホームディレクトリに保存します。

次に、下記のようにターミナルで vim を実行するとパッケージをインストールするか聞いてくるので y を選択してください。

~ $ vim
Not installed bundles:  ['vimshell', 'ctrlp.vim', 'vim-colorschemes', 'vim-fugitive', 'neosnippet.vim', 'neosnippet-snippets']
Install bundles now?
(y)es, [N]o: y

Go の Vim プラグイン、ファイラーなど

Shougo/unite.vim · GitHub
https://github.com/Shougo/unite.vim
vimfiler.vim をインストールするのに unite.vim が必要。
Shougo/vimfiler.vim · GitHub
https://github.com/Shougo/vimfiler.vim
fatih/vim-go · GitHub
https://github.com/fatih/vim-go

をインストールします。

~/.vimrc ファイルの

" My Bundles here:
NeoBundle 'Shougo/neosnippet.vim'
NeoBundle 'Shougo/neosnippet-snippets'
NeoBundle 'tpope/vim-fugitive'
NeoBundle 'kien/ctrlp.vim'
NeoBundle 'flazz/vim-colorschemes'

の次に

NeoBundle 'Shougo/unite.vim’
NeoBundle 'Shougo/vimfiler.vim’
NeoBundle 'fatih/vim-go'

github.com の ’名前/パッケージ名’ を追加し、Vim を起動すると

~ $ vim
Not installed bundles:  ['unite.vim', 'vimfiler', 'vim-go']
Install bundles now?
(y)es, [N]o: y

と聞いてくるので y を選択してください。これで終了です。Finder 上で MacVim をダブルクリックし、:VimFiler (:Vim と入力した後、Tab キーを押してください。補完されます。) と入力して Return キーを押します。ファイラーが起動します。カーソルキーと Return キーで移動し、編集したい Go ソースファイル名で e キーを押してください。シンタクスカラーリングされているはずです。:q で終了です。

Kate の場合、

Kate は、KDE が必要なので、Paralells Desktop 10 上に

Main Page - Linux Mint
http://www.linuxmint.com/

から

Download - Linux Mint
http://www.linuxmint.com/download.php
KDE	32-bit	64-bit	An edition featuring the KDE desktop	 Yes

KDE 64-bit 版をダウンロードしインストールしました。

Mac

$GOROOT/misc/kate/go.xml

ファイル go.xml を Mint 側のデスクトップにコピーし、

Linux Mint 側の

~/.kde/share/apps/kate

フォルダに syntax フォルダ作成し、デスクトップの go.xml ファイルを ~/.kde/share/apps/kate/syntax にコピーします。

~/.kde/share/apps/kate $ mkdir syntax
~/.kde/share/apps/kate $ cp ~/Desktop/go.xml syntax/

これで、Kate で Go ソースファイルを開くと Go のシンタックスがハイライトされます。

OS X 10.9 Mavericks で Radiko 録音する方法。

簡易 radiko.jp プレミアム対応 Radiko 録音スクリプト rec_radiko2.sh 公開。
http://kyoshiaki.hatenablog.com/entry/2014/05/04/184748

上記 URL も参考にしてください。

まず最初に OS X 10.9 Mavericks で動作するように修正した

2ch Script version 0.4
http://kyoshiaki.sakura.ne.jp/osx/index.html

を上記URLで公開します。フリーウェアなので、良かったら気軽にダウンロードして下さい。

最近、マンネリ気味なので新しいことに挑戦してみようと海外のサイト

Raspberry Pi(ラズベリーパイ)
http://jp.rs-online.com/web/generalDisplay.html?id=raspberrypi&cm_mmc=JP-PPC-0411-_-google-_-4_EEM_RaspberryPi_3Mar2012-_-raspberry%20pi_Broad

から Raspberry Pi を直接購入してみました。詳しい内容はまた次回に紹介したいと思います。現在、Radiko 録音装置として使っています。

Raspberry Pi 到着まで、12日かかりました。その間に Raspberry Pi の情報をウェブ上で収集していたのですが、Radiko の録音ツールとして利用している

ピコピコ日記: RaspberryPiでRadikoを録音する
http://shinyamatsuyama.blogspot.jp/2013/06/raspberrypiradiko.html

上記サイトを発見しました。Raspberry Pi が到着するまで暇なので OS X で試してみることにしました。ただし、Radiko を録音するスクリプト

簡易Radiko録音スクリプト
https://gist.github.com/matchy2/3956266

を使うことにしました。

まず、簡易Radiko録音スクリプトを実行できるように必要なプログラムをインストールする必要があります、

プログラムのインストールに

Homebrew — MacPortsは酒でも飲みたくなるでしょ?じゃあHomebrewを使おう!
http://brew.sh/index_ja.html

を利用することにしました。ターミナル上で次のコマンド

~ $ brew update
~ $ brew install wget rtmpdump swftools libxml2 ffmpeg

を使って必要なプログラムをインストールします。

次に

簡易Radiko録音スクリプト
https://gist.github.com/matchy2/3956266

上記 URL の左部分 ‘Download Gist’ ボタンをクリックしてダウンロードします。

ダウンロードされた gistxxxxxxx.tar.gz ファイルを Finder 上でダブルクリックして展開します。作成されたフォルダの中のファイル rec_radiko.sh をホームフォルダに移動します。 rec_radiko.sh ファイルを移動したら、作成されたフォルダはゴミ箱に捨ててください。

ターミナル上でファイル rec_radiko.sh に実行属性をつけます。

~ $ chmod +x rec_radiko.sh 

次に

radiko.jp
http://radiko.jp/

Safari でアクセスして地域と放送局を確認して下さい。(Radiko は IP アドレスを基準に地域を判定します。)

私が

radikoの番組表XML :宗子時空
http://www.dcc-jpl.com/diary/2011/06/13/radiko-xml/

を参考にしたエリア情報取得シェルスクリプト radiko_curl_area.sh、radiko_wget_area.sh と指定したフォルダ内の最新のファイル最大数を設定する Python スクリプト delete.py (delete.py は危険なプログラムです。むやみに実行しないでください。) を下記 URL

radiko_utility.zip
http://kyoshiaki.sakura.ne.jp/osx/Download/radiko_utility.zip

で公開します。上の URL からダウンロードしたファイル radiko_utility.zip を Finder 上で展開し、ファイル radiko_curl_area.sh、radiko_wget_area.sh、 delete.py をそれぞれホームフォルダに移動してください。作成されたフォルダはゴミ箱に捨ててください。

~ $ ./radiko_curl_area.sh 

上記コマンドをターミナル上で実行してください。地域別の放送局情報 XML都道府県別に JP1.xml ~ JP47.xml という名前のファイルでダウンロードされます。

ここで

radiko.jp
http://radiko.jp/

にアクセスした時に表示される地域がどの XML のファイルか確認します。

例えば、放送局の地域が東京ならコマンド grep で “TBSラジオ” で検索します。

~ $ grep -e "TBSラジオ" *.xml
JP10.xml:    <name>TBSラジオ</name>
JP11.xml:    <name>TBSラジオ</name>
JP12.xml:    <name>TBSラジオ</name>
JP13.xml:    <name>TBSラジオ</name>
JP14.xml:    <name>TBSラジオ</name>
JP8.xml:    <name>TBSラジオ</name>
JP9.xml:    <name>TBSラジオ</name>
~ $

JP8.xml ~ JP14.xml まで絞り込めました。

Finder 上で JP13.xml ファイルをダブルクリックすると Xcode が立ち上がります。

================ JP13.xml =======================
<?xml version="1.0" encoding="UTF-8" ?>
<stations area_id="JP13" area_name="TOKYO JAPAN">
<station>
<id>TBS</id>
<name>TBSラジオ</name>
<ascii_name>TBS RADIO</ascii_name>
.
.
</station>
<station>
<id>QRR</id>
<name>文化放送</name>
<ascii_name>JOQR  BUNKA HOSO</ascii_name>
<href>http://www.joqr.co.jp/</href>    <name>TBSラジオ</name>
.
.
================ JP13.xml =======================

2行目の area_name=”TOKYO JAPAN” より、JP13.xml が東京の放送局情報 XMLだとわかります。

rec_radiko.sh の引数は

rec_radiko.sh <channel_name_id> <minutes> <outputdir> [prefix]

です。引数の詳細は

channel_name_id: 放送局の station id
minutes: 何分録音するか
outputdir: 出力するディレクトリ
[prefix]: 保存ファイル名の先頭文字。指定されない場合 channel_name_id
が使われます。
例)
~ $ ./rec_radiko.sh TBS 1
TBS を 1分間録音してカレントディレクトリに名前の先頭が TBS のファイル
を MP3 形式で保存します。
~ $ ./rec_radiko.sh TBS 120 radio
TBSラジオを 120分録音してカレントディレクトリの radio ディレクトリに
名前の先頭が TBS のファイルを MP3 形式で保存します。

です。

自分の地域の放送局を確認するには、放送局情報 XML ファイル、東京の場合は JP13.xml

<station></station>

で囲まれた部分がそれぞれの放送局の情報です。例えば

 <station>
<id>TBS</id>
<name>TBSラジオ</name>
<ascii_name>TBS RADIO</ascii_name>

の部分

<id>TBS</id>

TBSラジオの channel_name_id です。

<station>
<id>QRR</id>
<name>文化放送</name>
<ascii_name>JOQR  BUNKA HOSO</ascii_name>

文化放送の場合は channel_name_id は QRR です。

~ $ ./rec_radiko.sh QRR 120 radio 

文化放送を 120分録音して radio ディレクトリに名前の先頭が QRR のファイルを MP3 形式で保存します。

実際に正しく動作するか、自分の地域の放送局 station_name_id で1分間録音を試してみてください。(ここでは文化放送を指定しています。)

~ $ ./rec_radiko.sh QRR 1 

カレントディレクトリ(この場合、ホームフォルダ) に、ファイル QRR_2014-XX-XX-XX_XX.mp3 が作成されているはずです。

Finder 上で ファイル QRR_2014-XX-XX-XX_XX.mp3 をダブルクリックすると iTunes に登録されてしまうので ‘/アプリケーション’ フォルダの QuickTime Player にドラッグ・ドロップして再生してください。

これで Radiko の録音に成功しました。

ただし、

perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
LC_ALL = (unset),
LANG = "ja_JP.utf8"

という警告が表示されます。問題はないのですが、いやなら .bashrc、.profile ファイルに

export LC_ALL=en_US.UTF-8
export LANG=ja_JP.utf8

を追加してください。

export LC_ALL=C

だと Ruby などで

invalid byte sequence in US-ASCII (ArgumentError)

上記のようなエラーが出ます。注意してください。

後は、cron を使って指定した時間に録音するようにします。次のコマンドを使って

~ $ sudo launchctl unload /System/Library/LaunchDaemons/com.vix.cron.plist
~ $ sudo launchctl load /System/Library/LaunchDaemons/com.vix.cron.plist

cron を起動してください。

次に crontab -e を使用して時間を設定します。

crontab -e を実行するとテキストエディタ vim が起動します。

まず最初に簡単な vim の説明をしたいと思います。vim には、4つのモード (ノーマルモード、コマンドモード、ビジュアルモード、挿入モード) があります。

ノーマルモード: 最初の状態
コマンドモード: ノーマルモードで : キーを押す
ビジュアルモード: ノーマルモードで v キーを押す
挿入モード: ノーマルモードで i キーを押す。
コマンドモード、ビジュアルモード、挿入モードで ESC キーを押すとノーマルモードに戻る。
位置の移動: カーソルキー
文字の入力: 挿入モードで、キーをタイプすると入力できます。delete キーで削除できます。
文字の削除: ノーマルモードで x キーを押すと一文字削除できます。
コピー: ノーマルモードでコピーしたい最初の位置に移動、その後ビジュアルモードに変更、
右カーソルキーで範囲を指定し、y キーを押すとコピーできます。
ペースト: ノーマルモードでペーストしたい位置にカーソルキーで移動し、p キーを押す。
ファイルを保存して終了: ノーマルモードで : w q の順に3つのキーを押して Return
キーを押す。

簡単な vim の説明は、これで終わりです。詳しい説明は

Vimの使い方
http://www15.ocn.ne.jp/~tusr/vim/vim_text0.html

を参考にしてください。

それではコマンド crontab -e を実行します。

~ $ crontab -e

vim が起動します。

PATH=/usr/bin:/bin:/usr/local/bin:/opt/local/bin:opt/local/sbin
0 1 * * 0,2-6 /Users/xxxxxx/rec_radiko.sh LFR 120 /Users/xxxxxx/radio

と入力して保存し、vim を終了してください。コマンド crontab -e を終了したら、入力されたデータが正しいかチェックされ結果がターミナル上に英語で表示されます。

PATH を忘れずに指定してください。
録音した MP3 ファイルを保存する radio ディレクトリを次のコマンド

~ $ mkdir radio

で作成してください。(Finder 上で作成しても構いません。)

0 1 * * 0,2-6 /Users/xxxxxx/rec_radiko.sh LFR 120 /Users/xxxxxx/radio

の xxxxxx の部分はターミナル上で pwd コマンドで

~ $ pwd
/Users/xxxxxx

確認して置き換えてください。

crontab の日付時刻設定は

# m h  dom mon dow  command
# 何分(0-59) 何時(0-23) 何日(1-31) 何月(1-12) 何曜日(0-6) コマンド
0 1 * * 0,2-6 /Users/xxxxxx/rec_radiko.sh LFR 120 /Users/xxxxxx/radio
数字は、時刻、日付、曜日を表し、
* は、毎月、毎日、毎時、毎分です。
曜日は
0: 日曜日
1: 月曜日
2: 火曜日
3: 水曜日
4: 木曜日
5: 金曜日
6: 土曜日

です。

0 1 * * 0,2-6 /Users/xxxxxx/rec_radiko.sh LFR 120 /Users/xxxxxx/radio

0,2-6 は、複数の曜日を指定しています。日曜日,火曜日〜土曜日を表しています。

上の例は日曜日と火曜日から土曜日の午前1時にコマンド

/Users/xxxxxx/rec_radiko.sh LFR 120 /Users/xxxxxx/radio

を実行します。

すなわち、ニッポン放送で日曜日と火曜日から土曜日の午前1時に2時間 (120 分) オールナイトニッポンを録音します。

radiko_utility.zip
http://kyoshiaki.sakura.ne.jp/osx/Download/radiko_utility.zip

に含まれる delete.py は、次の

~ $ ./delete.py -d radio 10

コマンドをターミナル上で実行すると radio フォルダの中の日付が最新 10 個以外の削除されるファイルを表示します。

~ $ ./delete.py -y -d radio 10

上のように -y を引数と指定すると ( -y を指定する場合、十分注意してください。) radio フォルダ内の最新 10 個以外のファイルを削除します。radio フォルダの中にフォルダがある場合、そのフォルダ内も最新10 個のファイル以外削除します。

~ $ ./delete.py -a -d radio

radio フォルダのすべてのファイルを表示します。

PATH=/usr/bin:/bin:/usr/local/bin:/opt/local/bin:opt/local/sbin
0 1 * * 0,2-6 /Users/xxxxxx/rec_radiko.sh LFR 120 /Users/xxxxxx/radio
0 10 * * 0 /Users/xxxxxx/delete.py -y /Users/xxxxxx/radio 10

上のように crontab -e で設定すると毎週日曜日の午前10時に radio フォルダ内のファイルを最新 10 個以外削除します。そのためディスク容量を気にする必要がありません。本来、Raspberry Pi 用に作成したものです。

後、失敗した録音ファイルは

~ $ open /tmp

で確認して下さい。

You have mail.
~ $ 

cron で指定したコマンドが実行されると上記のようにメールが届きます。
ターミナル上で

~ $ cd /var/mail
/var/mail $ ls
xxxxxx

上記コマンドを実行するとユーザー名: xxxxxx のファイルが確認できます。このファイルがメールの実体です。

/var/mail $ cat xxxxxx

上記コマンドで中身が見れます。削除するには

/var/mail $ sudo rm xxxxxx

を実行してください。

自作アプリの OS X 10.9 Mavericks 対応。Sprite Kit を使ったアプリケーション Neko version 1.0 公開。

久しぶりのブログ更新です。Retina ディスプレイ対応の iMac を待っていたのですが、当分なさそうなので、

15インチ MacBook Pro Retina ディスプレイモデル
製品番号: Z0PU
ハードウェア
2.3GHzクアッドコアIntel Core i7(Turbo Boost使用時最大3.5GHz)
16GB 1,600MHz DDR3L SDRAM
512GBフラッシュストレージ(PCIeベース)
バックライトキーボード (JIS) + 製品マニュアル(日本語)

上記、15インチ MacBook Pro Retina を購入しました。ディスプレイが眩しすぎて、目が痛いです。輝度を調整したり、アプリを App Store で購入してみたのですが、慣れるしかないようです。

また、OS も OS X 10.9 Mavericks になったので、私が普段利用している自作アプリを対応させました。 個人的にビルドし直したり、公開していないものもありますが!

  • 動作に問題がない自作アプリ
YKCalendar
StripToString
HatenaDiaryAssistance
PocketLauncher
YKClock
DateMaker
IndexView2
ConvertPTC
Search2chBBS
Wordbook2
YKBookmarks
iYKRSSMac
YKeyes
Sakura

  • 2chScriptMenu

ruby のバージョンが

~ $ ruby --version
ruby 2.0.0p247 (2013-06-27 revision 41674) [universal.x86_64-darwin13]

に変更になったので、正しく動作しません。それでソースの一部を修正しました。現在、問題なく動作しています。

  • PCG-LinkMac

Apple 純正の FTDI ドライバとメーカーの FTDI ドライバが衝突して USB・RS232C シリアルポート変換ケーブルを抜くとカーネルパニックが起きます。
対処方法は、下に別記載してあります。

  • AnimalCrossingDesign

Retina で開くと画像が正しく表示されません。Finder 上で AnimalCrossingDesign.app を右クリック( CTRL + 左クリック ) でメニューを表示し、’情報を見る’ を選択、’低解像度で開く’ に✔️を入れてください。これで再起動すれば、正しく表示されます。

以上の通りです。使っている人もいないと思うので、最新版をそれぞれ公開すべきか悩んでいます。

PCG-LinkMac 自体は、何の問題もなく動作します。ところが USB・RS232C シリアルポート変換ケーブルを抜くとカーネルパニックが起きます
Apple 純正の FTDI ドライバとメーカーの FTDI ドライバが衝突しているのが原因のようです。
それでメーカー製 FTDI ドライバをターミナル上で次のコマンドを使って削除してください。

~ $ cd /System/Library/Extensions/
/System/Library/Extensions $ sudo rm -R FTDIUSBSerialDriver.kext
Password:
/System/Library/Extensions $ sudo touch .
/System/Library/Extensions $

Apple 純正 FTDI ドライバ AppleUSBFTDI.kext は、/System/Library/Extensions/IOUSBFamily.kext/Contents/PlugIns フォルダにあります。

~ $ cd /System/library/Extensions/IOUSBFamily.kext/Contents/Plugins/
/System/library/Extensions/IOUSBFamily.kext/Contents/PlugIns $ ls
AppleUSBCDC.kext		AppleUSBMergeNub.kext
AppleUSBCDCACMControl.kext	AppleUSBOHCI.kext
AppleUSBCDCACMData.kext		AppleUSBOpticalMouse.kext
AppleUSBCDCDMM.kext		AppleUSBUHCI.kext
AppleUSBCDCECMControl.kext	AppleUSBVideoSupport.kext
AppleUSBCDCECMData.kext		AppleUSBXHCI.kext
AppleUSBCDCEEM.kext		IOUSBCompositeDriver.kext
AppleUSBCDCWCM.kext		IOUSBHIDDriver.kext
AppleUSBEHCI.kext		IOUSBHIDDriverSafeBoot.kext
AppleUSBFTDI.kext		IOUSBLib.bundle
AppleUSBHub.kext		IOUSBUserClient.kext
/System/library/Extensions/IOUSBFamily.kext/Contents/PlugIns $ 

後、コマンドラインツールをインストールするには、ターミナル上で

~$ xcode-select --install
~$ sudo xcodebuild -license

を実行するとインストールできます。

Java のインストールは Java 6 のアプリを起動すると Java 6 パッケージをインストールするか尋ねてきます。また Java 7 アプリを起動すると Java 7 パッケージをインストールすることができます。

以前から試してみたかった Sprite Kit に挑戦してみました。衝突処理を物理演算として処理するのには驚きました。

最初に

Sprite Kit Programming Guide: About Sprite Kit
https://developer.apple.com/library/mac/documentation/GraphicsAnimation/Conceptual/SpriteKit_PG/Introduction/Introduction.html#//apple_ref/doc/uid/TP40013043

の Jumping into Sprite Kit

Sprite Kit Programming Guide: Jumping into Sprite Kit
https://developer.apple.com/library/mac/documentation/GraphicsAnimation/Conceptual/SpriteKit_PG/GettingStarted/GettingStarted.html#//apple_ref/doc/uid/TP40013043-CH2-SW1
▼Jumping into Sprite Kit

を試して基本を理解しました。

サンプル3つ

code:Explained Adventure: Introduction
https://developer.apple.com/library/mac/documentation/GraphicsAnimation/Conceptual/CodeExplainedAdventure/AdventureArchitecture/AdventureArchitecture.html#//apple_ref/doc/uid/TP40013140
SpriteKit Physics Collisions
https://developer.apple.com/library/mac/samplecode/SpriteKit_Physics_Collisions/Introduction/Intro.html#//apple_ref/doc/uid/DTS40013390
Sprite Tour
https://developer.apple.com/library/mac/samplecode/Sprite_Tour/Introduction/Intro.html#//apple_ref/doc/uid/DTS40013389

も参考になります。特に

code:Explained Adventure: Introduction
https://developer.apple.com/library/mac/documentation/GraphicsAnimation/Conceptual/CodeExplainedAdventure/AdventureArchitecture/AdventureArchitecture.html#//apple_ref/doc/uid/TP40013140

は、本格的なアドベンチャーゲームです。ソースの解説も上記 URL にあります。

Xcode での Particle Emitter 作成方法は

Particle Emitter Editor Guide: About the Particle Emitter Editor
https://developer.apple.com/library/ios/documentation/IDEs/Conceptual/xcode_guide-particle_emitter/Introduction/Introduction.html

が参考になります。

SKEffectNode、CIFilter の使い方は

Sprite Kit Programming Guide: Working with Other Node Types
https://developer.apple.com/library/ios/documentation/GraphicsAnimation/Conceptual/SpriteKit_PG/OtherNodeClasses/OtherNodeClasses.html#//apple_ref/doc/uid/TP40013043-CH10-SW20
▼Working with Other Node Types
▼Effect Nodes Apply Special Effects to Their Descendants
Core Image Filter Reference
https://developer.apple.com/library/mac/documentation/GraphicsImaging/Reference/CoreImageFilterReference/Reference/reference.html

が参考になります。CIFilter を NSLog で直接表示すると

- (CIFilter *)spotLightFilter
{
CIFilter *filter = [CIFilter filterWithName:@"CISpotLight"]; // 3
[filter setDefaults];
NSLog(@"%@", [filter attributes]);
[filter setValue:[NSNumber numberWithFloat:10.00] forKey:@"inputBrightness"];
[filter setValue:[CIVector vectorWithX:150 Y:150 Z:300] forKey:@"inputLightPosition"];
//    [filter setValue:[CIVector vectorWithX:0 Y:0 Z:0] forKey:@"inputLightPointsAt"];
return filter;
}

2013-12-08 21:18:50.725 SpriteKitGuide[14458:303] {
CIAttributeDescription = "Applies a directional spotlight effect to an image.";
CIAttributeFilterCategories =     (
CICategoryStylize,
CICategoryVideo,
CICategoryStillImage,
CICategoryBuiltIn
);
CIAttributeFilterDisplayName = "Spot Light";
CIAttributeFilterName = CISpotLight;
CIAttributeReferenceDocumentation = "http://developer.apple.com/cgi-bin/apple_ref.cgi?apple_ref=//apple_ref/doc/filter/ci/CISpotLight";
inputBrightness =     {
CIAttributeClass = NSNumber;
CIAttributeDefault = 3;
CIAttributeDescription = "The brightness of the spotlight.";
CIAttributeDisplayName = Brightness;
CIAttributeIdentity = 1;
CIAttributeMin = 0;
CIAttributeSliderMax = 10;
CIAttributeSliderMin = 0;
CIAttributeType = CIAttributeTypeDistance;
CIUIParameterSet = CIUISetBasic;
};
.
.
.
inputImage =     {
CIAttributeClass = CIImage;
CIAttributeDescription = "The image to use as an input image. For filters that also use a background image, this is the foreground image.";
CIAttributeDisplayName = Image;
CIUIParameterSet = CIUISetBasic;
};
inputLightPointsAt =     {
CIAttributeClass = CIVector;
CIAttributeDefault = "[200 200 0]";
CIAttributeDescription = "The x and y position that the spotlight points at.";
CIAttributeDisplayName = "Light Points At";
CIAttributeType = CIAttributeTypePosition3;
CIUIParameterSet = CIUISetBasic;
};
inputLightPosition =     {
CIAttributeClass = CIVector;
CIAttributeDefault = "[400 600 150]";
CIAttributeDescription = "The x and y position of the spotlight.";
CIAttributeDisplayName = "Light Position";
CIAttributeType = CIAttributeTypePosition3;
CIUIParameterSet = CIUISetBasic;
};
outputImage =     {
CIAttributeClass = CIImage;
};
}

と詳しい解説が見れます。

SpriteKit を学んだ集大成として自作アプリ Neko を作成してみました。実行画面は

です。

Neko を下記 URL で公開します。ソースは要望があれば公開します。

Sprite Kit を使ったアプリケーション。
Neko version 1.0
http://kyoshiaki.sakura.ne.jp/osx/Sample/Neko.zip

注意) “Neko は開発元が未確認のため開けません” と表示される場合、Finder 上で Neko を右クリック (CTRL + 左クリック) し、表示されたメニューから ’開く’ を選択してください。ダイアログが表示されるので、’開く’ ボタンをクリックすれば、アプリケーションが実行できるはずです。