サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
大谷翔平
sumitomohiko.hatenablog.com
フィギュアを鑑賞するため、以下のようなターンテーブルを作りました。テーブルの直径は20cmで、5秒で1回転します。私が試したところでは、400gくらいまでならなんとか動かせます。 Turn table - YouTube この記事では、このターンテーブルの作り方について説明します。 なぜターンテーブルを自作しようと思ったのか? ターンテーブルには多くの既製品がありますが、これらは以下の私の要望を満たすものではないようでした。 ずっと回転し続けるのではなく、好きなところで止めたい。 右にも左にも回転させたい。 ACアダプタで動かしたい。 既製品を改造することも検討しましたが、以下のような問題点を感じました。 既製品のAmazonのレビューを読んでいたら、品質が不安になった。 費用が高くつきそう。 品質が高いものを作れるかどうかは分かりませんし、値段を安くできるかどうかも不明でしたが、自作した
from python import funは、プログラミングを題材としたマンガです。ひとりの女の子が、PythonとFreeBSDでプログラミングを始めます。 from python import fun is a comic whose theme is programming. One girl starts programming with Python on FreeBSD. Visit from python import fun's web site.
この記事は、http://hacks.mozilla.org/2009/07/tracemonkey-overview/の無許可日本語訳です。 Firefox 3.5 has a new JavaScript engine, TraceMonkey, that runs many JavaScript programs 3-4x faster than Firefox 3, speeding up existing web apps and enabling new ones. This article gives a peek under the hood at the major parts of TraceMonkey and how they speed up JS. This will also explain what kinds of programs get the bes
はじめに ハードディスクをcryptsetupで暗号化しつつ、LVMで分割し、ノートPCにUbuntuをインストールしたときの記録です。以下を対象にしています。 Dell LATITUDE x300 Ubuntu Linux 10.04 Desktop日本語Remix ハートディスクの容量は80Gbyteです。 方針 ハードディスクを、以下のように分割します。 デバイス 容量[byte] マウントポイント 暗号化 /dev/sda1 500M /boot しない(できない) /dev/sda2 11G / しない /dev/sda3 残りすべて する /dev/sda3は、LVMで以下のように分割します。 デバイス 容量[byte] マウントポイント /dev/mapper/vg0-swap 1G swap /dev/mapper/vg0-tmp 500M /tmp /dev/mapper
対象 この記事で取り上げている各ソフトウェアのバージョンは、PHP 5.1.6, PDO 1.0.3, PDO_SQLITE 1.0.1, SQLite 3.3.5です。 問題点 WebアプリケーションでPHPからSQLiteにPDOで接続しようと思い、 $pdo = new PDO('sqlite:/home/tom/projects/MagnesiumRider/mgr/db/data'); $stmt = $pdo->prepare("INSERT INTO ACCOUNT (NAME, PASSWORD) VALUES (:NAME, :PASSWORD)"); $stmt->bindValue(':NAME', $name); $stmt->bindValue(':PASSWORD', $password); $stmt->execute(); というコードを書いて実行したところ
環境 この記事の内容は、Ubuntu Linux 6.10で確認しました。 手順 手順は、以下の通りです。 dmesgでデバイスファイルを調べる。 fdiskでパーティションを作成する。 xfsでフォーマットする。 dmesgでデバイスファイルを調べる。 外付けUSBハードディスクをコンピュータに接続し、電源をいれます。それから、dmesgコマンドを実行します。 $ dmesg [17179569.184000] Linux version 2.6.17-11-generic (root@terranova) (gcc version 4.1.2 20060928 (prerelease) (Ubuntu 4.1.1-13ubuntu5)) #2 SMP Thu Feb 1 19:52:28 UTC 2007 (Ubuntu 2.6.17-11.35-generic) (略) [17181
概要 Mercurialでは、hgコマンドを実行したときに、Pythonの関数を実行することができます。この記事では、hg pushしたときに、Outputzにhg diffの結果をPOSTする方法について説明します。 MercurialのPythonフック .hg/hgrcで以下のように、[hooks]セクションに"python:"で始まる値を記述すると、hg pushコマンドを実行したとき、リポジトリの内容を送信する前に、Pythonのfoo.bar関数を実行します。 [hooks] preoutgoing=python:foo.bar "preoutgoing"は、フックを入れる箇所を指定しています。他に何があるかは、参考文献を参照して下さい。 また、hgコマンドを実行したとき、fooモジュールが読み込めるように、PYTHONPATHを設定しておく必要があります。 Outputzへの
環境 この記事の内容は、 Ubuntu Linux 6.10 H8/3048F(AKI-H8/3048開発キット(即使えるキット)) USB-シリアル変換ケーブル で確認しました。 概要 この記事では、H8/3048FのプログラムをLinux上で開発する方法について、 開発環境の準備 プログラムの作成 の2つにわけて、説明します。 開発環境の準備 手順 以下の手順で、開発環境を準備します。 必要なパッケージをインストールします。 AKI-H8/3048開発キットから、ヘッダファイルをコピーします。 ベストテクノロジーから、スタートファイルとリンカスクリプトをパクリダウンロードします。 Open H8 writerをインストールします。 パッケージのインストール $ sudo aptitude で、以下の2つのパッケージをインストールします。 binutils-h8300-hms gcc-h
概要 プログラミング言語のソースコード行数は、数万行から百数十万行です。 はじめに 私はプログラミング言語を作成しているのですが、一体どれくらい書けば一通りの機能を揃えることができるのか、他のプログラミング言語を調べてみました。 行数 計測は、以下のスクリプトで行いました。 find="/usr/bin/find" xargs="/usr/bin/xargs" wc="/usr/bin/wc" ${find} . -name "*.pl" -o -name "*.pm" -o -name "*.sls" -o -name "*.pas" -o -name "*.dfm" -o -name "*.dfm" -o -name "*.ml" -o -name "*.as" -o -name "*.cs" -o -name "*.h" -o -name "*.cpp" -o -name "*.c"
変数への代入は、等号"="を使って行います。 >>> foo = "bar" >>> foo 'bar' 複数の代入を、ひとつの代入文で書くことができます(こういう代入を、マルチターゲット代入と呼びます)。 >>> foo = bar = "baz" >>> foo 'baz' >>> bar 'baz' 代入文の左辺には、複数の変数をコンマでつなげて指定することができます。このとき、代入される右辺値は、変数の数と同じ数の式をコンマでつなげて指定します。 >>> foo, bar, baz = "hoge", "fuga", "piyo" >>> foo, bar, baz ('hoge', 'fuga', 'piyo') このとき、右辺値は、リストやタプル、文字列といったシーケンスでも構いません。左の変数から順に、シーケンスの最初の値から代入されます。 >>> foo, bar, baz
概要 Mercurialでは、pushするときの、デフォルトのリポジトリを設定することができます。これを設定しておくと、 $ hg push というように、リポジトリを指定せずにpushすることができます。 環境 この記事の内容は、Mercurial 0.9.5で確認しました。 方法 .hg/hgrcに以下を記述します。 [paths] default-push=<push先リポジトリ> 例えば、 [paths] default-push=http://SumiTomohiko@bitbucket.org/SumiTomohiko/yog/ とすれば、 $ hg push としただけで、http://bitbucket.org/SumiTomohiko/yog/にpushできます。
環境 この記事の内容は、Xubuntu Linux 7.10, Xfce4 4.4.1で確認しました。 問題 デスクトップにパネルが表示されません。 解決方法 ${HOME}/.cache/sessionsディレクトリを削除し、ログインし直します。これで、初期状態でパネルが表示されます。 解決方法に至るまでの経緯 aptitude searchコマンドで、インストールされているxfce4関連のパッケージを調べ、関連していそうなパッケージのファイルをdpkg --listfilesコマンドで調べたところ、xfce4-sessionパッケージに以下のファイルが含まれていることが分かりました。 /etc/xdg/xfce4-session/xfce4-session.rc このファイルには、以下の記述がありました。 # This the default session launched by x
環境 この記事の内容は、Mercurial 0.9.5で確認しました。 概要 Mercurialのリポジトリには、分かりやすい名前をつけることができます。例えば、あるリポジトリにfooという名前をつけたら、 $ hg push foo というコマンドで、そのリポジトリにpushできます。 方法 .hg/hgrcに、以下を記述します。 [paths] <リポジトリの名前>=<リポジトリのURL> 例えば、以下のようにします。 [paths] bitbucket=http://SumiTomohiko@bitbucket.org/SumiTomohiko/yog/ こうすれば、 $ hg push bitcucket で、http://bitbucket.org/SumiTomohiko/yog/にpushできます。
環境 この記事の内容は、FreeBSD 4.8-RELEASE, Apache 2.2.4で確認しました。 問題点 mod_proxyやmod_suexecなどをインストールしたいが、該当するportsが見当たりません。 解決方法 makeのときにWITH_name_MODULESオプションをつけます(詳細を参照してください)。 詳細 /usr/ports/www/apache22でmake show-optionsすると、モジュールのインストール方法が表示されます。 % make show-options Available knobs: By default, modules are compiled as dynamically loadable modules (DSO). Modules knobs philosophy: Modules are split in categor
手順 デバイスファイルをdmesgで確認する。 fdiskする。 mkfs.ext3する。 デバイスファイルをdmesgで確認する。 $ dmesg : [ 161.590623] usb 4-6: new high speed USB device using ehci_hcd and address 5 [ 161.723932] usb 4-6: configuration #1 chosen from 1 choice [ 161.724642] hub 4-6:1.0: USB hub found [ 161.731130] hub 4-6:1.0: 4 ports detected [ 162.034285] usb 4-6.2: new high speed USB device using ehci_hcd and address 6 [ 162.176004] usb 4
はじめに 私はメーラにMuttを使っています。Muttというのは、コンソール上で動作するメーラです。Emacs上で動作するWanderlustやMuleも使ってみましたが、 Emacs自体が私には難しかった。orz Muttのキーバインドが、私が愛用しているエディタviに似ている。 の2点から、Muttに落ち着きました。 しかしながら、Muttは日本では使っている人が少ないのか、あまり情報がありません。そこでせめて私の設定ファイル~/.muttrcを晒して公開して、他の人たちの参考にしてもらおうと思いました。 ~/.muttrc 以下が、私の~/.muttrcです。設定の説明は、コメントを参照してください。 set mbox_type="Maildir" set folder="~/Maildir/inbox" set spoolfile="~/Maildir/inbox" # realn
環境 この記事の内容は、Ubuntu 6.10, Apache 2.0.55, PHP 5.1.6, CakePHP 1.1.12.4205で確認しました。 事象 accountsコントローラでビューを出力したとき、 <?php $html->link('New Account', '/accounts/add'); ?> とすると、生成されるリンクは、 <a href="foo/accounts/add">New Account</a> となり、 <?php $html->link('New Account', 'accounts/add'); ?> とすると、生成されるリンクは、 <a href="foo/accounts/accounts/add">New Account</a> となります。 詳細 HTMLヘルパーはcake/libs/view/helpers/html.phpであ
変数には2種類あります。モジュール全体で有効なグローバル変数と、関数の内部でのみ有効なローカル変数です。 グローバル変数 モジュールのトップレベルで代入された変数は、グローバル変数になり、モジュール全体で有効になります。特になにもしなくても、関数の中から参照することができます。 >>> foo = "bar" >>> >>> def baz(): ... print foo ... >>> baz() bar 関数の中でグローバル変数に代入する場合は、global文で変数がグローバル変数であることを宣言します。global文には、グローバル変数の名前を、コンマで区切って指定します。 >>> foo = "foo" >>> bar = "bar" >>> >>> def baz(): ... global foo, bar ... foo = "hoge" ... bar = "fuga"
以下では、敬称は省略させていただきます。 最近のRuby: 2008春 日本Rubyの会 高橋征義 最近のRuby 1.9 会場に質問「Ruby 1.9を使ったことのある人は?」 3人くらい挙手した。 当初は1.9.1だったはず バージョン番号のつけ方が1.9から変更になった。 バージョン番号が1.X.Yのとき、 いままで Xが奇数なら開発版 Xが偶数なら安定版 これから Y == 0なら開発版 0 < Yなら安定版 完成度 仕様の完成度 追加はまだありそう。 実装の完成度 変更し続けている。 YARV Ruby専用VM わりと速い? Java VM上で動くJRubyも結構速いらしい。 専用VMの良し悪しは別 M17N 実装方法 文字列オブジェクトがエンコーディング情報を持つ。 文字列の長さ いままで バイト数 これから 文字数 インデックスも変わる。 "あいうえお"[2] #=> "う"
この記事について この記事は、id:SumiTomohiko:20070623:1182602060の続きです。これが最後の記事になります。 setuptoolsを拡張し、再利用する distutilsの拡張を作成する distutilsに新しいコマンドを追加したり、setupの引数を追加するのは困難です。しかし、setuptoolsぱっめーじはこれを少し簡単にします。これは、distutilsの拡張を別のプロジェクトとして配布できるようにし、その拡張を必要としているプロジェクトがsetup_requires引数でそれらを参照するようにするだけで、可能になります。 setuptoolsを使えば、「エントリポイント」を定義するだけで、distutilsの拡張プロジェクトは新しいコマンドとsetup()引数でフックすることができるようになります。コマンドまたは引数名を、ハンドラをインポートする
この記事について この記事は、id:SumiTomohiko:20070622:1182537643の続きです。 setuptoolsに基づいたプロジェクトを配布する setuptoolsを使用する...バンドルせずに! あなたのユーザは自分のマシンにsetuptoolsをインストールしていないでしょうし、あるいはもししていたとしても、正しいバージョンであるとは限りません。これを正すのは簡単です; 単にez_setup.pyをダウンロードして、これをあなたのsetup.pyスクリプトと同じディレクトリに置けばいいです(ez_setup.pyをバージョン管理システムに追加するのを忘れないでください)。そうしたら以下の2行を、セットアップスクリプトがsetuptoolsから何かをインポートする前に、あなたのセットアップスクリプトの先頭に追加します。 import ez_setup ez_set
概要 manage.pyに新しいコマンドを追加し、Djangoの環境内で任意の処理を行えるようにします。例えば、以下のようなことができるようになります。 $ PYTHONPATH=.. python manage.py hello Hello 環境 この記事の内容は、Ubuntu Linux 6.10, Python 2.4.4c1, Django 0.97-pre-SVN-6843で確認しました。 やり方 概要に記したように、"Hello"を表示する"hello"コマンドを追加するとします。ここで、以下のように、projectディレクトリにappアプリケーションがあるものとします(settings.pyの設定は、完了しているとします)。また、カレントディレクトリはprojectディレクトリであるとします。 project -- __init__.py -- app -- __init__
環境 この記事の内容は、Ubuntu Linux 6.10, Python 2.4.4c1で確認しました。なお、Python 2.5ではsreモジュールにあったものはreモジュールに移っています。sreモジュールは互換性のために残っていますが、将来は削除される予定です。Python 2.5を使っている場合は、sreモジュールをreモジュールと読みかえてください。 概要 sreモジュールにはScannerクラスがあり、これを使えば簡単にスキャナを作成することができます。 例 例えば、以下のようなスタイスシートを解析しようとします。 foo { bar: baz; /* test */ } このとき、以下のようなコードを書きます。 try: # for Python 2.5 or later from re import Scanner except ImportError: # for Py
問題点 「はてな認証API」により、ウェブアプリケーション開発者はアカウントの管理機能やログイン機能を、はてなに任せることができるようになります。しかし、これを用いたシステムを開発する際には、以下のような問題点が出てきます。 はてなにアクセスできる環境にないとテストできない。 テストを自動化している場合、テストケースにはてなのユーザ名とパスワードを記入しなければならない。 以上のような問題を解決するため、はてな認証APIをエミュレートするはてな認証エミュレータを作成しました。 ダウンロード はてな認証エミュレータは、以下のURLからダウンロードできます。 http://nekomimists.ddo.jp/~tom/repository/hatena_auth_emulator-0.1dev-r33.tar.gz 使い方 hatena_auth_emulator/hatena_auth_e
環境 この記事の内容は、Ubuntu Linux 6.10, Python 2.4.4c1, Django 0.97-pre-SVN-6128で確認しました。 要望 Djangoでは"404 Not Found"をブラウザに返すとき、 from django.http import Http404 raise Http404 とするだけで、テンプレートディレクトリの404.htmlを表示することができます。 同じことを、"403 Forbidden"でも行いたいです。すなわち、ユーザが自分の権限では閲覧できないページを開いたとき、 from site.app.exceptions import Http403 raise Http403 とすれば、テンプレートディレクトリの403.htmlが表示されるようにしたいです。 解決方法 今回は、ミドルウェアを作ってこの要望を満たします。 まず(サ
2007年8月4日に、Lightweight Language Spirit 2007が開催されました。これは、その報告です。なお、以下では敬称は省略させていただきます。 概要 イベント名 Lightweight Language Spirit 2007 日付 2007年8月4日 場所 日本教育会館3階 一ツ橋ホール 主催 Lightweight Language Spirit実行委員会 タイムテーブル 以下は当初の予定ではなく、実際のタイムテーブルです。Language Updateの終了時刻が、予定より10分遅れました。 開始時刻 終了時刻 プログラム名 10時30分 11時30分 基調講演 11時30分 12時50分 Language Update 13時30分 15時00分 オレ様言語の作りかた(パネル) 15時30分 17時00分 VM魂(パネル) 17時30分 19時00分 キ
環境 この記事の内容は、Python 2.4.4c1, Twisted 2.4.0-1で確認しました。 疑問点 Twistedのソースコードを読んでいたら、以下のような記述を見つけました。ファイルは、/usr/lib/python2.4/site-packages/twisted/internet/defer.pyです。 def _runCallbacks(self): : callback, args, kw = item[ isinstance(self.result, failure.Failure)] ここで、itemは配列です。配列ですが、インデックスには数値ではなく、TrueまたはFalseであるisinstance関数の戻り値を与えています。なぜこんなことが可能なのか、調べてみました。 結論 TrueとFalseは整数であり、Trueは1, Falseは0です。 詳細 現象か
環境 この記事の内容は、Ubuntu Linux 6.10, Python 2.4.4c1で確認しました。 疑問点 例えば、以下のようなファイル構造があったとします。 . `-- foo |-- __init__.py `-- bar.py このうち、foo/__init__.pyは空です。foo/bar.pyは、以下のようになっています。 def baz(): print "baz" このとき、fooパッケージをimportしただけでは、barモジュールにはアクセスできません。barモジュールにアクセス(し、その中の関数を使用)するためには、foo.barをimportする必要があります。 >>> import foo >>> foo.bar Traceback (most recent call last): File "<stdin>", line 1, in ? Attribute
環境 この記事の内容は、Ubuntu Linux 6.10, Python 2.4.4c1, Twisted 2.4.0で確認しました。 はじめに id:SumiTomohiko:20070712:1184244636でTwistedのリアクタの話をした際、yasusiiさん (http://lowlife.jp/yasusii/) から、 どのリアクタを使うかハードコーディングせずに、実行時に切り替えられるようにするため、若干トリッキーな仕組みになっています。Twisted アプリケーションの場合、twistd コマンドの -r オプションでリアクタを変更できます。twisted/application/reactors.pyあたりを読んでみてください。 というコメントをいただきました。そこで、twistdを始め、リアクタについてもう少し調べてみました。 まとめ twistdは、サーバの
次のページ
このページを最初にブックマークしてみませんか?
『SumiTomohiko's blog』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く