Showing posts with label Snow Leopard. Show all posts
Showing posts with label Snow Leopard. Show all posts

August 25, 2010

Carbon Emacsで英語フォントをInconsolataに日本語フォントをヒラギノ丸ゴにする

プログラミングに最適なConsolasとかInconsolataとか - 0xFFと話題になっていたのでEmacsで使ってみる.普通に設定すると日本語フォントが微妙.日本語と英語を別々のフォントにする.

.emacsに以下のように記述する.

(create-fontset-from-mac-roman-font
 "-apple-inconsolata-medium-r-normal--14-0-72-72-m-0-iso10646-1"
 nil "myfont")

(set-fontset-font "fontset-myfont"
                  'japanese-jisx0208
                  '("ヒラギノ丸ゴ pro w4*" . "jisx0208.*"))

(set-fontset-font "fontset-myfont"
                  'katakana-jisx0201
                  '("ヒラギノ丸ゴ pro w4*" . "jisx0201.*"))

(add-to-list 'default-frame-alist '(font . "fontset-myfont"))

Inconsolataは以下のページの下部 OpenType file を右クリックして保存,インストール.

http://www.levien.com/type/myfonts/inconsolata.html


InconsolataのXLFD表現の取得は以下のページの下部の CarbonEmacs の項を参考に

1. M-x mac-font-panel-mode でフォントパネルを開いてInconsolataを選択
2. M-x describe-font でXLFD表現が表示されるのでコピー(たとえば,-apple-inconsolata-medium-r-normal--14-0-72-72-m-0-iso10646-1)

http://www.emacswiki.org/emacs/SetFonts


日本語と英語で別々のフォントを設定するのは以下のページの「フォントセットを予め定義する」の項を参考にした.

http://macemacsjp.sourceforge.jp/matsuan/FontSettingJp.html

August 8, 2010

Carbon Emacsのpython-modeの設定

Carbon Emacsにはデフォルトでpython-mode.elが入ってる。
ただし、設定しないとpython.elのまま。python.elだとバッファ上で実行するから同じフォルダの他のファイルをインポートできない。ちょっと困る。時もある。

以下設定方法。

~/.emacsファイルに次のように記述。
;;; python-mode
(autoload 'python-mode "python-mode" "Python editing mode." t)

以下使い方。python-mode.elより抜粋。後で見やすくする?
;; electric keys
(define-key py-mode-map ":" 'py-electric-colon)
;; indentation level modifiers
(define-key py-mode-map "\C-c\C-l" 'py-shift-region-left)
(define-key py-mode-map "\C-c\C-r" 'py-shift-region-right)
(define-key py-mode-map "\C-c<" 'py-shift-region-left) (define-key py-mode-map "\C-c>" 'py-shift-region-right)
;; subprocess commands
(define-key py-mode-map "\C-c\C-c" 'py-execute-buffer)
(define-key py-mode-map "\C-c\C-m" 'py-execute-import-or-reload)
(define-key py-mode-map "\C-c\C-s" 'py-execute-string)
(define-key py-mode-map "\C-c|" 'py-execute-region)
(define-key py-mode-map "\e\C-x" 'py-execute-def-or-class)
(define-key py-mode-map "\C-c!" 'py-shell)
(define-key py-mode-map "\C-c\C-t" 'py-toggle-shells)
;; Caution! Enter here at your own risk. We are trying to support
;; several behaviors and it gets disgusting. :-( This logic ripped
;; largely from CC Mode.
;;
;; In XEmacs 19, Emacs 19, and Emacs 20, we use this to bind
;; backwards deletion behavior to DEL, which both Delete and
;; Backspace get translated to. There's no way to separate this
;; behavior in a clean way, so deal with it! Besides, it's been
;; this way since the dawn of time.
(if (not (boundp 'delete-key-deletes-forward))
(define-key py-mode-map "\177" 'py-electric-backspace)
;; However, XEmacs 20 actually achieved enlightenment. It is
;; possible to sanely define both backward and forward deletion
;; behavior under X separately (TTYs are forever beyond hope, but
;; who cares? XEmacs 20 does the right thing with these too).
(define-key py-mode-map [delete] 'py-electric-delete)
(define-key py-mode-map [backspace] 'py-electric-backspace))
;; Separate M-BS from C-M-h. The former should remain
;; backward-kill-word.
(define-key py-mode-map [(control meta h)] 'py-mark-def-or-class)
(define-key py-mode-map "\C-c\C-k" 'py-mark-block)
;; Miscellaneous
(define-key py-mode-map "\C-c:" 'py-guess-indent-offset)
(define-key py-mode-map "\C-c\t" 'py-indent-region)
(define-key py-mode-map "\C-c\C-d" 'py-pdbtrack-toggle-stack-tracking)
(define-key py-mode-map "\C-c\C-f" 'py-sort-imports)
(define-key py-mode-map "\C-c\C-n" 'py-next-statement)
(define-key py-mode-map "\C-c\C-p" 'py-previous-statement)
(define-key py-mode-map "\C-c\C-u" 'py-goto-block-up)
(define-key py-mode-map "\C-c#" 'py-comment-region)
(define-key py-mode-map "\C-c?" 'py-describe-mode)
(define-key py-mode-map "\C-c\C-h" 'py-help-at-point)
(define-key py-mode-map "\e\C-a" 'py-beginning-of-def-or-class)
(define-key py-mode-map "\e\C-e" 'py-end-of-def-or-class)
(define-key py-mode-map "\C-c-" 'py-up-exception)
(define-key py-mode-map "\C-c=" 'py-down-exception)
;; stuff that is `standard' but doesn't interface well with
;; python-mode, which forces us to rebind to special commands
(define-key py-mode-map "\C-xnd" 'py-narrow-to-defun)
;; information
(define-key py-mode-map "\C-c\C-b" 'py-submit-bug-report)
(define-key py-mode-map "\C-c\C-v" 'py-version)
(define-key py-mode-map "\C-c\C-w" 'py-pychecker-run)
;; shadow global bindings for newline-and-indent w/ the py- version.
;; BAW - this is extremely bad form, but I'm not going to change it
;; for now.
(mapc #'(lambda (key)
(define-key py-mode-map key 'py-newline-and-indent))
(where-is-internal 'newline-and-indent))
;; Force RET to be py-newline-and-indent even if it didn't get
;; mapped by the above code. motivation: Emacs' default binding for
;; RET is `newline' and C-j is `newline-and-indent'. Most Pythoneers
;; expect RET to do a `py-newline-and-indent' and any Emacsers who
;; dislike this are probably knowledgeable enough to do a rebind.
;; However, we do *not* change C-j since many Emacsers have already
;; swapped RET and C-j and they don't want C-j bound to `newline' to
;; change.
(define-key py-mode-map "\C-m" 'py-newline-and-indent)

August 6, 2010

Snow Leopardに64bitのSciPyをインストールする

SciPyはPythonの数値解析ソフトウェア。

追記。

現在は Scipy Superpack
Recent builds of fundamental Python scientific computing packages for OS X
から。



SciPy.orgでも紹介されているが、Mac OS X 10.6 Snow LeopardにプリインストールされているPython 2.6.1で利用できる64bitのSciPyやらNumPyやらのインストールスクリプトがあって便利。(プリインストールのPythonのみ。FinkやらDarwin PortsからインストールしたPythonだと使えない、らしい。)

SciPy Superpack for Python 2.6 (64-bit)の下の方にある「Download Scipy Superpack Installer for OSX 10.6」とあるリンクからスクリプトをダウンロード。

ターミナルから
sh superpack_10.6_2010.07.27.sh
とすると、gFortranをインストールするか聞かれたり、管理者パスワードを聞かれたりしながら作業が進んでいく。

インストールされるのは
gFortran
ez_setup
numpy
matplotlib
scipy
pymc
ipython
nose
DateUtils

とても便利。

August 5, 2010

AutopagerizeでFilckrを除く

Tumblrで回避するために Exclude Patterns に /[^.]+\.tumblr\.com\// を追加した

March 15, 2010

radiko.jpをダッシュボードウィジェットに

radiko.jpはじまった!

Web Clipを使って、ダッシュボードに置くための手順のメモ。Mac、Snow Leopard。

まず、適当な放送局をListen now!して、SafariのファイルメニューからOpen in Dashboard。


ダッシュボードに貼付ける範囲を設定する。上のradiko.jpあたりをクリックすると全体を選択できて、Add。

できた。Dashboard Widget。


このままだと、ダッシュボードからはなれると音が聞こえない!ので、右下の「i」のマークをクリック。


Only play audio in Dashboardのチェックを外す。スタイルも変えれる。


「ラヂコで聞いてます。」

February 2, 2010

MacのFirefoxでコピペができないのはLastPassのせいだった

FirefoxでCopy & Pasteができない。
どうやらLastPassのアドオンが悪さしていた模様。
とりあえず無効化していろいろ試したら…

どうやらホットキーの設定が(今のところ)いけなかったようだ。
ホットキーの設定を空にしたらコピーできるようになった。

うーん。

MacのFirefoxをセーフモードで起動する

  1. Firefoxを完全に終了する
  2. option を押しながらFirefoxを起動する

February 1, 2010

MacでIronPythonでSilverlightで時計をつくるサンプルのメモ

題名のとおり。
つくったものものはこちら

つづき→
MacでIronPythonでSilverlightで時計をつくるサンプルのメモ その2

準備

  1. MonoでMono 2.6 Frameworkをダウンロードしてインストールする。
  2. IronPythonで上のタブからDownloadsを選んでOther Available DownloadsのなかのIronPython-2.6-Bin.zipをダウンロードする。
  3. 解凍してどこかに置く。
  4. シェルの設定ファイル(~/.bashrcとか)にChiron.exeのエイリアスを定義する。置いた場所はフルパスで。たとえばドキュメント以下に解凍したら、


    alias Chiron="mono '/Users/(ユーザ名)/Documents/IronPython-2.6/Silverlight/bin/Chiron.exe'"
    とする。

開発

zipを解凍すると Silverlight/script/templates/python というフォルダにサンプルがあるのでそれを元にアプリをつくる。

  1. pythonフォルダをどこかにコピー。clockとか名前を付ける。
  2. とりあえず起動してみる。ターミナルでコピーしたフォルダに移動して

    Chiron /b
    とするとブラウザが起動する。


  3. index.html
    をクリックするとWelcome to Python and Silverlight!と表示される。はず。

MacでIronPythonでSilverlightで時計をつくるサンプルのメモ その2につづく。

December 26, 2009

Chironで実行可能なSilverlightアプリをつくるときのコマンド

構成が
app/app.py
app/app.xaml
index.html
で、index.html内で
<param name="source" value="app.xap"/>
としたら
Chiron /d:app /z:app.xap

Google App Engineでテンプレートを使おうとしたらUnicodeDecodeError

Google App Engineでテンプレートを使おうとしたらエラーが出る。

UnicodeDecodeError: 'ascii' codec can't decode byte 0xe3 in position 116: ordinal not in range(128)

どうやらテンプレートで日本語を使おうとしたときのunicodeのエンコード・デコードのエラーっぽい。

…
sentence = 'すもももももももものうち。'
template_values = {'sentence':sentence}
path = os.path.join(os.path.dirname(__file__), 'index.html')
self.response.out.write(template.render(path,template_values))
…

これのtemplate.render()に

.decode('utf-8')

をつけて

…
sentence = 'すもももももももものうち。'
template_values = {'sentence':sentence}
path = os.path.join(os.path.dirname(__file__), 'index.html')
self.response.out.write(template.render(path,template_values).decode('utf-8'))
…

となおしたら、大丈夫だった。テンプレートはutf-8で。

December 25, 2009

MacでLaTeXはDrag & Drop pTeXがいい

Snow Leopardになっても小川版pTeXがすごくいい。

Drag & Drop pTeX - JIS X0212 for pTeX
http://www2.kumagaku.ac.jp/teacher/herogw/

ghostscriptのインストールも忘れずに!

  1. 古いものを削除。アンインストールツールが付いている。


  2. pTeX.appをアプリケーションフォルダにドラッグアンドドロップ。


  3. TeXShopのPath設定で(pdf)TeXを

    /Applications/pTeX.app/teTeX/bin

    に。TeX + dvips + distllerの設定も

    Xtexshop

    に。dvipdfmxでフォントを埋め込む。なお埋め込まない場合はXtexshop-ryu。文字コードの認識しない場合は

    Shift_JIS/ヒラギノフォント埋め込みの場合は“dotexshop”、同/フォント非埋め込みの場合は“dotexshop-ryu”
    EUC/ヒラギノフォント埋め込みの場合は“dotexshop-euc”、同/フォント非埋め込みの場合は“dotexshop-euc-ryu”
    UTF-8/ヒラギノフォント埋め込みの場合は“dotexshop-utf8”、同/フォント非埋め込みの場合は“dotexshop-utf8-ryu”


  4. ついでに文字コードもUTF-8に。


  5. あとは Typesetting の Default Script を Tex + DVI にして、Misc の BibTeX を jbibtexにする。

December 23, 2009

MacのEclipseでGoogle App EngineのPYTHONPATH




Eclipseで新しいGoogle App Engineのプロジェクトを作るときのGoogle App Engine Directory、あるいはプロジェクトを指定してからプロパティでPyDev - PYTHONPATHのExternal Librariesの場所は
/Applications/GoogleAppEngineLauncher.app/Contents/Resources/GoogleAppEngine-default.bundle/Contents/Resources/google_appengine
PyDev - PYTHONPATHのExternal LibrariesではAdd Source FolderしてからCtrl+Shift+Gで直接場所を指定できる。


/usr/local/bin/dev_appserver.py
"${project_loc}/src"
--port==9999

December 18, 2009

ことえりにZコマンドを



Google日本語入力で使える「Zコマンド」がすごいのようにことえりのユーザ辞書に単語を登録した。

z+[hjkl] = ←↓↑→
z+- = ~
z+[ = 『
z+] = 』
z+, = ‥
z+. = …
z+/ = ・

記号入のほうは登録するときは注意が必要。たとえば「z.」は「z。」で登録しないとうまく行かない。

ユーザ辞書にRegister Wordsするときのショートカットは

Ctrl + Shift + N

MacからEPDことEnthought Python Distributionを消す方法

以下引用。

• On Mac, you'll need to uninstall manually as Apple does not yet support a standard uninstall mechanism for .mpkg installers. The recommended uninstall commands are as follows. The instructions suffixed by a #* are specific to restoring a different Python interpreter, in this case MacPython 2.5 from python.org. If you want to restore a different Python, you'll need to know where your backup Python environment is and customize these commands based on that information.

cd /Library/Frameworks/Python.framework/Versions
sudo rm -rf 2.5.2001 Current
sudo ln -fhs 2.5 Current
cd /Applications
sudo rm -rf "EPD 2.5.2001"
cd /usr/local/bin
PYTHON=/Library/Frameworks/Python.framework/Versions/Current
sudo ln -fsh $PYTHON/bin/python
sudo ln -fsh $PYTHON/bin/pythonw
sudo ln -fsh $PYTHON/bin/python2.5
sudo ln -fsh $PYTHON/bin/pythonw2.5

As an example, on OS X 10.6, to restore the default Python installation you would set the PYTHON variable as:

PYTHON=/System/Library/Frameworks/Python.framework/Versions/2.6
EPD - Frequently Asked Questions (FAQ) :: Products :: Enthought, Inc.

December 13, 2009

jQuery + PythonのJSONでのデータのやり取り


jQueryとPython CGIのデータのやり取りをJSONでおこないたい。
構成は、
index.html
sample.js
sample.py
(lib/jquery/jquery-1.3.2.js)

index.html

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
        <title>jQuery + Python</title>
    </head>
    <body>
        <h1>jQuery + Python</h1>
    
  <form id="hoge">
   <input type="text" name="foo" />
   <input type="text" name="bar" />
   <input type="text" name="baz" />
  </form>
  
  <a id="foo" href="#">show</a>
  <a id="bar" href="#">clear</a>
  <div id="baz"></div>

  <script type="text/javascript" src="lib/jquery/jquery-1.3.2.js"></script>
  <script type="text/javascript" src="sample.js"></script>
    </body>
</html>


sample.js

p2jはパラメータからJSON形式に変換する関数。どこかのページに掲載されていたのですが、失念してしまいました。すいません。
var $j = jQuery.noConflict();

function p2j(d) {
 if (d.constructor != Array) {
  return d;
 }
 var data={};
 for(var i=0;i<d.length;i++) {
  if (typeof data[d[i].name] != 'undefined') {
   if (data[d[i].name].constructor!= Array) {
    data[d[i].name]=[data[d[i].name],d[i].value];
   } else {
    data[d[i].name].push(d[i].value);
   }
  } else {
   data[d[i].name]=d[i].value;
  }
 }
 return data;
};


$j(document).ready(function(){ 
 $j('#foo')
 .click(function() {  
  // クエリ
  var query = $j(":input").serializeArray();
  console.log(p2j(query));
  
  // GETリクエスト
  $j.get('sample.py', query, function(text) {
   // 結果の処理
   var json = JSON.parse(text);
   var html = "";
   for (var i in json) {
    html += json[i].key + ':' + json[i].value + ' ';
   }
   $j('#baz').html(html);   
  });
  
  return false;
 });
 
 $j('#bar')
 .click(function (){
  $j('#baz').html('');
 }); 
});


sample.py

JSON形式にするにはjsonモジュールかsimplejsonモジュールがいいかもしれません。
#!/usr/bin/env python
# -*- coding: utf-8 -*-

import cgi
import cgitb; cgitb.enable()
import json

print "Content-type: text/javascript; charset=utf-8"
print

form = cgi.FieldStorage()

foo = form.getfirst("foo", "")
bar = form.getfirst("bar", "")
baz = form.getfirst("baz", "")

print json.dumps([{'key':'foo','value':foo},
                  {'key':'bar','value':bar},
                  {'key':'baz','value':baz}])

November 10, 2009

Eclipseを2つ開く

Macで。Eclipseを複数起動したい。

ターミナルから、
open -n /Applications/eclipse/Eclipse.app
ただし既に開いているワークスペースは開けない。

ちなみに open -n の説明。
-n, --new Open a new instance of the application even if one is already running.

November 8, 2009

Pythonのsqlite3のおおまかな手順

Pythonのsqlite3のおおまかな手順を記す。

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

# sqliteモジュールをインポートする
import sqlite3

# コネクションをつくる
conn = sqlite3.connect('post_tube.sqlite3')

# カーソルをコネクションからつくる
c = conn.cursor()

# テーブルをつくる
try:
    c.execute('''create table stocks (date text, trans text, symbol text, qty real, price real)''')
except sqlite3.OperationalError:
    print "table stocks already exists"

# データ行を追加する
c.execute("insert into stocks values ('2006-01-05','BUY','RHAT',100,35.14)")

sql = "insert into stocks values (?,?,?,?,?)"
c.execute(sql, ('2006-01-06','BUY','RHAT',100,35.14))

c.executemany("insert into stocks values (?,?,?,?,?)", 
    [('2006-01-07','BUY','RHAT', 150, 35.14),
    ('2006-01-08','BUY','RHAT', 300, 35.14)])

# レコード取得
c.execute("select * from stocks")
for row in c:
    print row[0], row[1], row[2]

# レコード更新
c.execute("update stocks set trans='SELL' where qty > 100")

# レコード削除
c.execute("delete from stocks")

# コネクションの変更を保存(コミット)する
conn.commit()

# 終わったらカーソルを閉じる
c.close()

12.13. sqlite3 — DB-API 2.0 interface for SQLite databases http://docs.python.org/library/sqlite3.html

November 2, 2009

Carbon EmacsでPython

一番使いそうなコマンド

C-c C-c バッファの内容をPythonで実行
C-c C-r リージョンの内容をPythonで実行
C-c C-s 任意の式をPythonで実行
C-c C-z Pythonの出力を表示
M-TAB 補完

C-x o フレームを移動
C-x →/← バッファを移動