Tag/Mac

SWFMacMouseWheelがバグってるメモ

t-matsuda 氏と AS3.0 MouseWheel on Mac OS X を触る必要があったんだけども、 なぜかwindowsでエラー吐くので調べてみたよ。

エラー内容を見てみると、 どうやら SWFMacMouseWheelregisterObject ってメソッドが無いらしい。 それはさすがにアリエナイだろ。って思ってソースを見てみたら、 swfmacmousewheel_src.js の20行目あたりに、ものっすごいのが書いてあった!

var swfmacmousewheel = function()
{
    if( !swfobject ) return null;

    var u = navigator.userAgent.toLowerCase();
    var p = navigator.platform.toLowerCase();
    var mac = p ? /mac/.test(p) : /mac/.test(u);

    //  この1行がアリエナイ。
    if( !mac ) return null;

    // 処理がつづく...

    //  Macだとここが実行される。
    return {
        /*
        Public API
        */
        registerObject: function(objectIdStr)
        {
            regObjArr[regObjArr.length] = objectIdStr;
        }
    };
}();

この実装はどうなんだ? そりゃ registerObject なんてメソッド無いだろうよ。 windowだと swfmacmousewheel の中身がnullになるよ!

このあと、なんだかんだ修正しまくったんだけども、 とりあえずのやっつけなのであれば、

if ( !mac ) return null;

のところを、

if ( !mac ) return {
    registerObject: function () {}
};

って変えてあげればエラーは消えるよ。 本当にやっつけだけども。 他にも色々と問題があったりなかったりなので、 デフォルトのまま使うのであれば、注意したほうが良いかもね :-P

Posted at: 
2008/04/01 14:31:09
0 Comments
1 TrackBack
Tags: 
Flash
JavaScript
Mac
Trackback: 
http://humming.via-kitchen.com/2008/04/01/swfmacmousewheel-bug-memo/trackback/

MacのPythonを野良Portsからデフォルトに

MacPython野良Ports からデフォルトにしたよ。 色々と easy_install で入れたのでとりあえずメモ。

  • readline-2.4.2
  • yolk-0.3.0
  • ipython-0.8.2
  • docutils-0.4
  • Pygments-0.9
  • MySQL_python-1.2.2
  • pysqlite-2.4.1
  • SQLAlchemy-0.4.4
  • lxml-2.0.2
  • httplib2-0.4.0
  • pytc-0.3
  • simplejson-1.7.4
  • python-twitter-0.5
  • Paste-1.6
  • PasteScript-1.6.2
  • PasteDeploy-1.3.1

Django はsvn-trunkを使ってるので、 シンボリックリンク貼り直しておしまい。

デフォルトの Python のreadline問題は知ってたので、 Yの砂箱 さんの「 LeopardにバンドルされてるPythonでreadlineを有効にする方法を見つけた。 」を参考に回避。 無事に日本語とかヒストリーとか、いつもの使い勝手が復活。

MySQL_python も、そのまま easy_install するとエラるのを知ってたので、 パッチ当ててから叩く。肝心のパッチファイルは MacPorts の中に入ってるのを拝借してくる。

$ cd /usr/local/src
#   パッチファイル2枚をコピってくる
$ cp /opt/local/var/macports/sources/rsync.macports.org/release/ports/python/py25-mysql/files/* ./
$ curl -O http://osdn.dl.sourceforge.net/sourceforge/mysql-python/MySQL-python-1.2.2.tar.gz
$ tar zxf ./MySQL-python-1.2.2.tar.gz
$ cd MySQL-python-1.2.2
#   パッチ2枚を当てる
$ patch -p0 < ../patch-_mysql.c.diff
$ patch -p0 < ../patch-setup_posix.py.diff
$ cd ../
$ sudo easy_install -UZ ./MySQL-python-1.2.2

ちゃんと MySQL_python も入ったよ。めでたしめでたし :-)

後は pysvn と戦うだけ。 ホントにコイツとは相性悪いんだよなぁ。

Posted at: 
2008/03/16 19:32:52
0 Comments
1 TrackBack
Tags: 
Mac
Python
Trackback: 
http://humming.via-kitchen.com/2008/03/16/change-python-on-mac/trackback/

AS3でSWFMacMouseWheelを作ってみたよ。

SWFMacMouseWheel がAS2にしか対応してないらしくて、 勢いでAS3に対応したヤツを作ってみたよ。

使い方はある程度真似てみたんだけれども、 AS2を知らないので何とも。

AS側の使い方としては、 最初にドキュメントクラスとかで configure をコールして初期化する。

import flash.display.Sprite;
import com.viakitchen.ui.MacMouseWheel;

public class Root extends Sprite
{
    public function Root()
    {
        //  stageを渡して初期化。
        MacMouseWheel.configure(stage);
    }
}

後は、 MOUSE_WHEEL なイベントを付けたDisplayObjectを、 MacMouseWheeladd して行くだけ。

addEventListener(MouseEvent.MOUSE_WHEEL, mouseWheelListener);
MacMouseWheel.add(this);

JS側は macmousewheel.js を読み込ませて、 SWFObject のインスタンスを渡す。

var so = new SWFObject('wheel.swf', 'externalWheel', '400', '400', '9', '#ffffff');
so.addParam('allowScriptAccess', 'sameDomain');
so.write('replaced');
new MacMouseWheel(so);

既存の SWFMacMouseWheel がこのやり方なんだけども、 ココは変えるかも。 あんまりスマートくないし、 SWFObject に依存してるし。 普通にid渡せた方が良いような気がする。

まだまだバグとかあるかもなので、 発見したら教えてくださいまし。

追記

本家 のほうでAS3に対応されたみたいですよ!

追記2

諸事情でデータが消えましたので、 ダウンロード出来なくなっちゃいました :-( すいません。

Posted at: 
2008/02/02 16:28:01
5 Comments
0 TrackBacks
Tags: 
ActionScript
Flash
Mac
Trackback: 
http://humming.via-kitchen.com/2008/02/02/swfmacmousewheel-on-actionscript3/trackback/

Macでユーザの追加のやり方

Leopardになって、NetInfoが無くなってから、 どうやってユーザ追加するのかな?と思ってたら、 dscl ってコマンドで出来るらしいよ。

$ sudo dscl . -create /Users/<USERNAME>
$ sudo dscl . -create /Users/<USERNAME> UniqueID <uid>
$ sudo dscl . -create /Users/<USERNAME>  PrimaryGroupID <gid>
$ sudo dscl . -create /Users/<USERNAME> UserShell </path/to/shell>
$ sudo dscl . -create /Users/<USERNAME> NFSHomeDirectory </path/to/home>

グループの追加はこんな感じらしい。

$ sudo dscl . -create /Groups/<GROUPNAME>
$ sudo dscl . -create /Groups/<GROUPNAME> PrimaryGroupID <gid>

【コラム】OS X ハッキング! (251) Leopard解体新書(2) ~さようならNetInfo~ | パソコン | マイコミジャーナル で、 結構詳しく解説してくれるよ。

迷ったときは、とりあえず、

$ dscl
>help

して、ヘルプみたら良いって覚えておく。

Posted at: 
2008/01/23 08:51:35
0 Comments
0 TrackBacks
Tags: 
CUI
Mac
Trackback: 
http://humming.via-kitchen.com/2008/01/23/how-to-add-user-on-mac/trackback/

Macでパスワード付きzipを作る。

Mac でパスワード付きzipを作りたいと思って、 色々探しまわってみたら、 Zip Tools for Mac OSX なんてモノを見つけた。 これの中に入ってる zipcloak ってコマンドでパスワードを設定出来るらしい。

で、入れる前になんとなくwhichしてみたら、 10.5にデフォルトで入ってたよ。

//  圧縮自体はしてくれないので、先にやっておく。
$ zipcloak /path/to/hoge.zip

ってやると、パスワードを聞かれる。 2回聞かれるので、同じのを入力しておしまい。

デフォルトのアーカイブユーティリティだとエラー吐いて展開出来ないけど、 StuffIt Expander なら問題なく展開出来た。

Posted at: 
2008/01/15 05:24:49
0 Comments
1 TrackBack
Tags: 
CUI
Mac
Trackback: 
http://humming.via-kitchen.com/2008/01/15/create-locked-zip-on-mac/trackback/

MacPortsのvimでトラブったメモ

MacPorts がおかしくなっていたらしく、再インストールしてみたら vim が入らなくなっちゃったよ。 どうやら p7zip が上手くインストール出来ないらしい。

具体的にはこんな感じのエラーが出る。

$ sudo port install vim +cscope +huge +kaoriya +python +ruby +cocoa
--->  Fetching p7zip
--->  Attempting to fetch patch-install.sh from http://svn.macports.org/repository/macports/distfiles/p7zip
--->  Attempting to fetch patch-install.sh from http://svn.macports.org/repository/macports/distfiles/general/
--->  Attempting to fetch patch-install.sh from http://svn.macports.org/repository/macports/downloads/p7zip
Error: Target org.macports.fetch returned: fetch failed
Error: The following dependencies failed to build: p7zip
Error: Status 1 encountered during processing.

色々調べてみると、MacOSX用にコンパイルされた p7zip/opt/local/bin にコピペすると上手く行くらしい。 krmathis' homepage からダウンロード出来るけど、今回は運良く再インストール前のツリーを消さずにおいてあったのでそれをコピペして試してみる。

$ sudo cp /opt/old_local/bin/7za /opt/local/bin/7za
$ sudo cp -R /opt/old_local/lib/p7zip /opt/local/lib/

これでもう一度 vim をインストールしてみる。

$ sudo port install vim +cscope +huge +kaoriya +python +ruby +cocoa
--->  Fetching vim
--->  Attempting to fetch 7.1.001 from ftp://ftp.vim.org/pub/vim/patches/7.1
--->  Attempting to fetch 7.1.002 from ftp://ftp.vim.org/pub/vim/patches/7.1
...
--->  Verifying checksum(s) for vim
--->  Extracting vim
--->  Applying patches to vim
--->  Configuring vim
--->  Building vim with target all
--->  Staging vim into destroot
--->  Installing vim 7.1.100_0+cocoa+cscope+huge+kaoriya+python+ruby
--->  Activating vim 7.1.100_0+cocoa+cscope+huge+kaoriya+python+ruby
--->  Cleaning vim

今度は上手く行ったっぽいよ。 念のため一通りテストしてみたけど、ちゃんと動いてるしね。 このエントリーも gvim で書いてみたけど、問題なく書けたよ。素敵。

MacPortsp7zip がインストール出来るようになるまで、とりあえずコレで回避しておこう。

Posted at: 
2007/09/16 18:28:02
0 Comments
0 TrackBacks
Tags: 
Mac
MacPorts
vim
Trackback: 
http://humming.via-kitchen.com/2007/09/16/installation-trouble-of-vim-on-mac/trackback/

Macのvimでバックスペースが効かない?

今までMacの vim でバックスペースが効かなかった。もうちょっと言うと前回入力した値がバックスペースで消せなかった。

Ubuntuだとちゃんと動くのでなんか気持ち悪いものの、何となく放ったらかしてた。

けど、最近はMacでも vim を使う事が増えて来たので、ちゃんと調べて解決する事に。参考にしたのはいつも vim の事ではお世話になっている Vimの全オプション さん。

で、速攻発見。以下の1行で解決。

set backspace=indent,eol,start

省略形だとこうなるらしい。

set bs=indent,eol,start

引数の indent, eol, start は、それぞれそれっぽい意味を持っております。が、とりあえずこう書けば入力モード時に普通のテキストエディタっぽく振る舞ってくれます。

ここらへんのちょっとした挙動の違いは、かなり生産性に影響するので重要。やっぱ手抜きはダメですね。今後気をつけて調べるようにしよう。

Posted at: 
2007/09/05 23:27:42
2 Comments
0 TrackBacks
Tags: 
Mac
vim
Trackback: 
http://humming.via-kitchen.com/2007/09/05/backspace-does-not-work-on-macvim/trackback/

MacのDjangoをsvn-trunkに。

Macの Django を0.96からsvn-trunkにしてみたメモ。

とりあえずは svn でソースを落としてくる。 どこに置いても良いみたいなので、今回は /usr/local/src/Django に置いた。

$ cd /usr/local/src
$ svn co http://code.djangoproject.com/svn/django/trunk ./Django

落として来たソースの中にある django なディレクトリを、 シンボリックリンクとかで site-packages に入れてやれば良いらしい。 ので、既存の Django - 0.96と置き換える形になる。

$ cd /usr/local/python/lib/python2.5/site-packages
$ sudo rm -rf ./django
$ sudo rm Django-0.96-None-py2.5.egg-info
$ sudo ln -s /usr/local/src/Django/django ./django

ココでひとまずバージョン確認しておく。

>>> import django
>>> django.VERSION
(0, 97, 'pre')

とりあえずは上手く行っている模様。 まぁ、転ぶところなんて無い訳ですが。

で、エラー吐くと分かっていながらも、 ブログのソースを runserver してみる。

$ ./manage.py runserver
Validating models...
0 errors found

Django version 0.97-pre-SVN-6022, using settings 'applications.settings'
Development server is running at http://127.0.0.1:8000/
Quit the server with CONTROL-C.

意外にも素直に立ち上がってくれた。 じゃあ、って事で意気揚々とブラウザから確認。

が、しかし。

Exceptionが飛んでる。 LookupError だそうです。 unknown encoding: X-MAC-JAPANESE らしく、完全にMac固有の問題っぽい。 どうやら locale モジュールの getdefaultlocale が悪さ?をしてるらしく、 インタラクティブシェルで確認してみる。

>>> import locale
>>> locale.getdefaultlocale()
(None, 'X-MAC-JAPANESE')

ちなみにコイツ、言語環境で英語に切り替えて試すと mac-roman に変わった。 それだと Django は元気よく動いてくれた。 けど、環境ほぼ全てが英語になってしまう。それはちょっと犠牲多過ぎ。

ちょっとGoogleさんに相談してみるといくつか情報を発見。

まずは1個目方法を試す。と、ちゃんと動く。 なるほど、目指す場所は理解出来た気がする。

2個目の方法は getdefaultlocale ではないものの、 たぶん根っこの部分は同じだと思う。という勝手な思い込み。 別のライブラリとかで同じエラーに出くわすのもアレなので、 今回はこちらの方法で対処する事にした。

具体的には Python ソースツリーの Modules/_localemodule.c に以下を追記してリコンパイル。 これで良いのかは分かりませんけれども。

static char *mac_getscript(void)
{
    CFStringEncoding enc = CFStringGetSystemEncoding();
    static CFStringRef name = NULL;
    /* Return the code name for the encodings for which we have codecs. */
    switch(enc) {
    case kCFStringEncodingMacRoman: return "mac-roman";
    case kCFStringEncodingMacGreek: return "mac-greek";
    case kCFStringEncodingMacCyrillic: return "mac-cyrillic";
    case kCFStringEncodingMacTurkish: return "mac-turkish";
    case kCFStringEncodingMacIcelandic: return "mac-icelandic";
    /* ココを追加 */
    case kCFStringEncodingMacJapanese: return "utf-8";
    /* XXX which one is mac-latin2? */
    }
    if (!name) {
        /* This leaks an object. */
        name = CFStringConvertEncodingToIANACharSetName(enc);
    }
    return (char *)CFStringGetCStringPtr(name, 0);
}

リコンパイル後にもう一度インタラクティブシェルでテスト。

>>> import locale
>>> locale.getdefaultlocale()
(None, 'utf-8')

上手くいったっぽい! Django もちゃんと動いたしね! でも、ちょっと疲れたので UbuntuDjango アップデートはまた今度。

追記

X-MAC-JAPANESE に一番近いのはshift_jisだそうです。なので、utf-8を返すのは間違い。詳しくは Django-ja (at Lingr) > Archives > September 07, 2007 をご覧ください!

今後、気をつけます。

Posted at: 
2007/08/27 19:24:07
0 Comments
0 TrackBacks
Tags: 
Django
Mac
Python
Trackback: 
http://humming.via-kitchen.com/2007/08/27/update-django-on-mac/trackback/

PrivatePortfileでvim入れたよ

PrivatePortfilevim 入れたよ。 gvim 使ってみたかったし、アンチエイリアスとか文字がキレイだとテンションが上がるのです。

実際に入れたのはこの2つ。

vim のvariantで +migemo とかすると PrivatePortfile/CMigemo に依存するらしい。

とりあえずは両方ダウンロードしてきて、 LocalPortfile のツリーに入れる。で、ツリーを更新しておく。

# LocalPortfileのトップで叩く。
$ sudo portindex

一度 search してみて確認する。

$ port search migemo
cmigemo                        textproc/cmigemo 1.3c         C/Migemo is a Japanese incremental search tool.

vim も確認。

$ port search vim
vim                            editors/vim    7.1.54       Vi workalike with many additional features
vimdrop                        aqua/vimdrop   0.8          droplet for getting files loaded into vim
vim                            editors/vim    7.1.050      Vi workalike with many additional features
vim-app                        editors/vim-app 7.1.050      Vim.app is a GUI version of the famous editor vim.
p5-text-vimcolor               perl/p5-text-vimcolor 0.11         syntax color text in HTML or XML using Vim.
vim2html                       textproc/vim2html 1.46         vim2html converts any Vim-editable file into well-formed HTML

vim に関しては、デフォルトのツリーにもあるので注意。バージョンとかで判断。(適当)

ココからインストール。まずは cmigemo から。

$ sudo port install cmigemo +utf8

次に vim を入れる。

$ sudo port install vim +aqua +cscope +huge +kaoriya +macvim +multibyte +python +ruby

エラー吐かなければ完了。 vimgvim が使えるよ。( vim はデフォルトで入ってるけど。) 後は好みの設定を $HOME/.gvimrc に書くだけ。

以下、現状の .gvimrc っす。殆どコピペ。

"
"   .gvimrc
"
set iminsert=0 imsearch=0
set antialias
set macatsui
set guifont=Osaka-Mono:h14
set transparency=200

"   window settings.
set columns=177
set lines=53

"   syntax highlight.
hi Normal   guifg=White     guibg=Black

今後調べて整えていこう。

Posted at: 
2007/08/09 23:47:14
0 Comments
0 TrackBacks
Tags: 
Mac
MacPorts
vim
Trackback: 
http://humming.via-kitchen.com/2007/08/09/install-vim-using-privateportfile/trackback/

後に続け!

Voluntas さんの コチラのエントリー より。

がアップされてます! Senna - 1.0.8対応。

って事で、早速アップデート。ちゃんと入りましたよ!素敵過ぎます!

Posted at: 
2007/08/05 00:27:08
0 Comments
0 TrackBacks
Tags: 
Mac
MacPorts
MySQL
Senna
Tritonn
Trackback: 
http://humming.via-kitchen.com/2007/08/05/follow-this/trackback/

Categories

Archives