Macがスリープしなくなった

なぜか突然MacBook Proがスリープ状態にならなくなりました。(ディスプレイはオフでネットワークもオフだけど、インジケータが点滅しない+ファンが動いてる)
電源ケーブルを抜くとスリープするけど、繋いでるといつまでも点いたまま。

Macbookで、電源が繋がった状態でスリープしない。閉じてもスリープしない。: Apple サポートコミュニティ https://discussionsjapan.apple.com/thread/10108604?start=0&tstart=0

私の場合は1つ目の「Activity Monitor から powerd を一回強制終了させる」で解決しました。

$ sudo killall powerd

でもスリープから復帰するたびにこれをやらないといけないので、すごい面倒。

自動化

sleepwatcherで自動化させました。

スリープ時に外付けHDDを自動切断する方法 - Macに夢中
http://good-morning-call.jimdo.com/2011/11/20/%E3%82%B9%E3%83%AA%E3%83%BC%E3%83%97%E6%99%82%E3%81%AB%E5%A4%96%E4%BB%98%E3%81%91hdd%E3%82%92%E8%87%AA%E5%8B%95%E5%88%87%E6%96%AD%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95/

$ brew install sleepwatcher
$ vim /usr/local/etc/sleepwatcher/rc.sleep

# 追加
killall powerd

$ sudo cp /usr/local/Cellar/sleepwatcher/2.2/de.bernhard-baehr.sleepwatcher-20compatibility.plist /Library/LaunchDaemons/de.bernhard-baehr.sleepwatcher.plist
$ sudo launchctl load /Library/LaunchDaemons/de.bernhard-baehr.sleepwatcher.plist

これで復帰時に通知されるネットワークエラーの嵐に悩まされることもなくなりました。

参考

plistの中身を参考までに。スリープ時に /usr/local/etc/sleepwatcher/rc.sleepが、復帰時に /usr/local/etc/sleepwatcher/rc.wakeupが実行されると。

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
	<key>Label</key>
	<string>de.bernhard-baehr.sleepwatcher</string>
	<key>ProgramArguments</key>
	<array>
		<string>/usr/local/sbin/sleepwatcher</string>
		<string>-V</string>
		<string>-s /usr/local/etc/sleepwatcher/rc.sleep</string>
		<string>-w /usr/local/etc/sleepwatcher/rc.wakeup</string>
	</array>
	<key>RunAtLoad</key>
	<true/>
	<key>KeepAlive</key>
	<true/>
</dict>
</plist>

DjangoでWerkzeugのデバッガを使う

Werkzeugというツールキットには、エラー発生時にブラウザ上から対話モードでPythonコードを実行できるという、強力なデバッガが付いています。Pythonコードは、エラー発生箇所でのコンテキストで実行できるため、変数の内容の確認はもちろん、変数を書き換えたりすることでうまくいくまで試行錯誤を行うこともできます。
そこで、そのデバッガをDjango上でも使えるようにする手順を記します。

Werkzeugについて

Python/Werkzeug
http://www.void.in/wiki/Python/Werkzeug

開発サーバーで使う場合

こちらのサイトを参考にさせていただきました。

Werkzeug + django を簡単に使う方法
http://d.hatena.ne.jp/Voluntas/20090118/1232259389

Werkzeugとdjango_extensionsをインストールする。

$ pip install Werkzeug
$ pip install django-extensions

settings.pyにアプリケーションを登録する。

INSTALLED_APPS = (
    ...
    'django_extensions',
)

あとは、サーバーを起動する際に、runserverではなくrunserver_plusとするだけです。

$ python manage.py runserver_plus

Apacheのmod_wsgi上で使う場合

mod_wsgiがすでに入っているものとします。

上記と同様に、Werkzeugをインストールします。django-extensionsは必要ありません。

以下のようなwsgiファイルを作ります。django-extensionsのrunserver_plusコマンドのコードを参考にしています。

# -*- coding: utf-8 -*-

import os
import sys


# パスを通す処理とか
# sys.path.append(...)


import django

from django.core.handlers.wsgi import WSGIHandler
from django.core.servers.basehttp import AdminMediaHandler
from django.views import debug
from werkzeug import DebuggedApplication


def null_technical_500_response(request, exc_type, exc_value, tb):
    raise exc_type, exc_value, tb
debug.technical_500_response = null_technical_500_response


admin_path = os.path.join(django.__path__[0], '/contrib/admin/media')
handler = AdminMediaHandler(WSGIHandler(), admin_path)
application = DebuggedApplication(AdminMediaHandler(handler), evalex=True)

このファイルをmod_wsgiの設定でWSGIScriptAliasに指定して、Apacheを再起動すれば、エラー画面でWerkzeugのデバッガが使えるようになります。
なお、DEBUG = TRUE でないとデバッガは表示されません。

NetBeansでScalaの開発をする(Mac)

portが入っているものとします。

1. Scalaを入れる

$ sudo port install scala28
$ sudo scala_select scala28

実験。

$ scala
Welcome to Scala version 2.8.1.final (Java HotSpot(TM) 64-Bit Server VM, Java 1.6.0_22).
Type in expressions to have them evaluated.
Type :help for more information.

scala> println("Hello World")
Hello World

2. NetBeansを入れる

日本語サイト(http://netbeans.org/)からインストールする。最新バージョン(平成23年1月26日時点)は6.9。バンドルはよく分からなかったので、“Java”をインストールした。

3. プラグインを入れる

6.9用のプラグインを、http://sourceforge.net/projects/erlybird/files/nb-scala/6.9v1.1.0/ からダウンロードする。それ以外についてはこちら(http://wiki.netbeans.org/Scala)を参照。

NetBeansを立ち上げて、「ツール」→「プラグイン」を選び、「ダウンロード済み」タブを開いて、「プラグインの追加」からダウンロードした拡張子.nbmのファイルをすべて追加してインストール。署名がないとかいうエラーが出るが、気にせずインストール続行。

4. ライブラリの追加

NetBeansの「ツール」→「ライブラリ」からライブラリを追加する。ライブラリ名は「Scala28」、ライブラリの種類は「クラスライブラリ」とし、「JAR/フォルダを追加」から、/opt/local/share/scala-2.8/lib/scala-library.jar を追加する。

5. Scalaのパスの設定

/Applications/NetBeans/NetBeans 6.9.1.app/Contents/MacOS/environment.plist を作成し、Scalaのパスを通す。Scalaのバージョンが違う場合やパスが違う場合は、環境に合わせる。

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
    <dict>
        <key>SCALA_HOME</key>
        <string>/opt/local/share/scala-2.8</string>
        <key>PATH</key>
        <string>/opt/local/bin:/opt/local/sbin:/bin:/sbin:/usr/bin:/usr/sbin:/opt/local/share/scala-2.8</string>
    </dict>
</plist>

/Applications/NetBeans/NetBeans 6.9.1.app/Contents/Resources/NetBeans/etc/netbeans.conf を開き、“netbeans_default_options”に以下のように追加する。

netbeans_default_options="... -J-Dscala.home=/opt/local/share/scala-2.8/"

一度ログアウトして、再ログインしたら完了。

CentOS x86_64にmod_wsgiを入れる

x86_64のCentOSに、ソースからPythonを入れてmod_wsgiを入れようとするとエラーが出たので、うまくいったときの方法を残しておきます。

Pythonを入れる

ソースからインストール。

# wget http://www.python.org/ftp/python/2.6.6/Python-2.6.6.tar.bz2
# tar xjvf Python-2.6.6.tar.bz2
# cd Python-2.6.6
# ./configure --prefix=/usr/local/python2.6 --enable-shared LDFLAGS='-fPIC'
# make
# make install

パスを通す。

# vim /etc/profile.d/python.sh
export PATH=/usr/local/python2.6/bin:$PATH

# source ~/.zshrc

# vim /etc/ld.so.conf.d/python.conf
/usr/local/python2.6/lib

# ldconfig

mod_wsgiを入れる

# wget http://modwsgi.googlecode.com/files/mod_wsgi-3.3.tar.gz
# tar xzvf mod_wsgi-3.3.tar.gz
# cd  mod_wsgi-3.3
# ./configure --with-python=/usr/local/python2.6/bin/python
# make
# make install

zshでport(MacPorts)の補完をする

zshは強力な補完機能が売りの1つですが、MacPortsのportコマンドには対応していません。variantsで、

$ sudo port install zsh +mp_completion

とすればMacPorts用の補完用スクリプトが入るのですが、キャッシュされていなくて遅かったり、variantsに対応していなかったりと若干不満が残るものでした。
なので、その辺に対応させたものを書いたので上げてみます。(動作保証はしません

ダウンロード

http://www7b.biglobe.ne.jp/~hagure_beans/files/_macports
https://github.com/beans15/my_settings/blob/master/.zsh/functions/_macports


基本的にどちらも同じです。上のURLは、もしかしたらそのうち消えるかもしれません。あと、最新でないかもしれません。

設定

ホームディレクトリに .zsh/ ディレクトリを作り、さらにその中に、cache/ ディレクトリと functions/ ディレクトリを作ります。

$ mkdir ~/.zsh
$ mkdir ~/.zsh/cache
$ mkdir ~/.zsh/functions

そして、.zsh/functions/ ディレクトリの中に、ダウンロードした _macports ファイルを置きます。

$ cp ~/Downloads/_macports ~/.zsh/functions/

最後に、.zshrc の、compinitの前に以下の設定を加えます。

# ローカルの補完ディレクトリを追加
fpath=(~/.zsh/functions ${fpath})
# キャッシュの設定
if [ -d ~/.zsh/cache ]; then
    zstyle ':completion:*' use-cache yes
    zstyle ':completion:*' cache-path ~/.zsh/cache
fi

使い方

書くほどのことではない気もしますが、とりあえず書いときます。

$ port install

と書いてタブを打つと、インストール可能なportsが表示されます。最初はキャッシュされていないので遅いですが、2回目以降はまともな速度で表示されるはずです。
また、variantsは、

$ port install zsh +

と書いてタブを打つと、利用できるvariantsが表示されます。

補足

キャッシュは、.zsh/cache/ ディレクトリの、*PORTS ファイルに入れているので、キャッシュをクリアする場合は、

$ rm -f ~/.zsh/cache/*PORTS

と打ってシェルを再起動すれば、キャッシュなしで補完できるようになります。デフォルトでは1週間でキャッシュが無効になるようになっています(この辺適当)


あと、作った本人が実はそれほどMacPortsに詳しくないので、ひょっとしたら間違ってるかもしれません。そのときはコメントしていただけるとありがたいです。

バトル検定

ポケモンBW ライモンシティのバトル検定に行ってみました。今回が初めてです。そういえばそんなのもあったなぁ〜って感じで(要するに忘れてた、と)

結果は、
5696ポイント(エリートランク)

まあ、初めての割にはいい方ですかね。ちなみにシングルです。使用ポケモンはこんな感じ。

ロトム(ウォッシュフォルム)
性格: ひかえめ
持ち物: しずくプレート
技:
  10まんボルト
  ハイドロポンプ
  めざめるパワー(こおり)
  まもる ← ダブルで使ったときのまま直し忘れてた

ハッサム
性格: ゆうかん
特性: テクニシャン
持ち物: ラムのみ
技:
  バレットパンチ
  ばかぢから
  とんぼがえり
  まもる ← 同上

サザンドラ
性格: ひかえめ
持ち物: こだわりメガネ
技:
  りゅうせいぐん
  だいもんじ
  あくのはどう
  きあいだま

2戦目から急に強くなるわ、ハイドロポンプ当たらないわ・・・。相手のタイプが偏り気味だったので、楽なときは楽だったんですけどね。