忍者ブログ
雇われるだけの人生から目指せ独立、社会人2年目なゲーム脳SEのブログ。更新頻度=週2~3回。
[1]  [2]  [3]  [4]  [5]  [6]  [7
×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

開発にはIDEが欠かせません。確かにvimやEmacs一筋というのも漢らしくてかっこよいとは思うのですが、今は限られた時間に1行でも多くのソースを書き1秒でも早くバグを発見したい時代ですから、やはりIDEあってこその開発でしょう。

Python のIDEにはいろいろあります。Python標準付属にIDLEというIDEもありますし、EclipseのプラグインにPyDevという高機能なIDE もあります。ですがこのたび、PyScripterというdelphiによって作られたIDEが日本語化されて公開されたというニュースが舞いこんできま したので、早速試してみることにしました。Python専用IDEと言うのが面白そうですが、果たしてPyDevから乗り換えるだけの魅力があるでしょう か?

参考リンクはこちら:
pyscripter - PyScripter Development Site
MMM-Experts - Products
PyScripterが日本語化されます - 偏った言語信者の垂れ流し
PyScripterの日本語化

動かしてみたイメージはこんな感じです。
WS000163.JPG

ちょっ と使ってみて感じられたメリットは、まず非常に動作が軽快です。といっても比較対象が重くて仕方がないEclipse+PyDevですから相手が悪いです が、それでもPyDevで出来ることならほとんどなんでも出来て、その上でこの軽さなら悪くないんじゃないでしょうか。

それから内蔵 Pythonインタープリタが非常に優秀です。PyDevのデバッグビューも好きですが、こちらのデバッグビューはPython実行環境上にあるすべての オブジェクトをすべて表示できる(もちろん__builtin__やインポートしたモジュールオブジェクトもです)ため、Pythonの勉強にもなりま す。っていうか、なってます。
WS000164.JPG


逆にデメリット。まずエディタ機能が貧弱。私にとって、 Alt+矢印キーによる行の入れ替えとCtrl+Dによる行一括削除が出来ないエディタはエディタじゃないです(特にCtrl+Dの選択行削除機能がつい ているエディタが中々見当たりません。Sakuraに似たような機能がありますが一度に複数行削除できないですし、EmEditorに至ってはそもそもそ ういった機能自体がありません。秀丸にはあるのかな・・・)。キーコンフィグが出来るのは素直にうれしいですけど・・・。

続いてもう一 点、エクスプローラ機能とプロジェクト管理機能が弱いです。別に見たくもないSubversionの設定フォルダまで見えてしまうのはちょっとねぇ・・・ と言う感じ。そこまで絶望的じゃないですし、特に「ローカルマシン上の複数の箇所においてあるPythonスクリプト資源に高速にアクセスするという」コ ンセプトの上でしたら非常によいと思いますが、「ひとつのプロジェクトをじっくり開発する」にはあまり向いていないエクスプローラビューです。

最 後に、一番嫌なところ。Google App Engineのdev_appserverをデバッグモードで起動できません。デバッグをするためには内部Pythonインタープリタか外部(ネットワー ク上の別のマシン)のPythonインタープリタに連携して起動する必要があるのですが、外部のインタープリタなんて早々用意できませんし、内部のイン タープリタでdev_appserverを走らせると完全にフリーズします(接続待ち待機に入るため。Pythonスクリプトだけ別スレッドで起動できな い)。
一応外部ツールとして起動することは出来るので、全くどうしようもないわけじゃないですが、ブレークポイントを置いてデバッグすることが出来ないのでPyDevに圧倒的に劣ってしまいます。


と言うわけで結論。
軽 量で高機能、ちょっとしたスクリプト(たとえばTracのhookスクリプトとか)を書いたり編集したりするには非常に適している。しかしフレームワーク やPythonを利用したWebサーバでアプリケーションを作成するには向いていない(別スレッドで起動してデバッグが出来ないため)。Eclipseが 重過ぎて使えない環境(たとえばメモリ1GBしかないとか)では活躍できそう。もしくはきちんと外部のPythonインタープリタとの連携設定を用意すれ ば化けるかも。
PR
近頃飲み会が非常に多いです。
ボーナス直後ということで皆さん財布の中身が分厚いから、いろいろなところからお呼びがかかります。盛り上げ役でもなく大食漢でもない財布役でもない私を誘っていただけるのですから非常に嬉しいことです。

今日は金曜日と言うことで勤務先から本社に戻りましたので、本社の同期仲間と呑みに行きました。
最近は自分へのインプットばかりで、皆さんへのアウトプットを怠り気味だったので、
ここらで一気に貯まった小ネタを放出したいと思います。



https://www.google.com/calendar/embed?src=fvijvohm91uifvd9hratehf65k@group.calendar.google.com
Googleカレンダーを利用したIT関連勉強会一覧カレンダーだそうです。
カバー率がものすごいです。東京はもちろん、大阪や札幌などの勉強会もカバーされています。

http://mycroft.mozdev.org/download.html?name=http%3A%2F%2Feow.alc.co.jp%2F&sherlock=yes&opensearch=yes&submitform=Search
私がもっぱら愛用している英語辞書サイト「スペースアルク」の検索がブラウザ内蔵の検索バーで出来るようになるプラグインです。Firefox2以上とIE7で動きます。SafariやOpera、Sleipnirでもおそらく動作します。
おかげさまで素早く英単語検索が出来て大変重宝しております。

UMLのステートチャート図(ステートマシン図)が、画面遷移図を表現するのに非常に便利と言うことがわかり大変重宝しております。



こんなところでしょうか。思ったより数がありませんでした。
Pythonの細かいプログラミングテク(スーパクラスの呼び出しとかクラスメソッドとインスタンスメソッドの違いとかクラスフィールドとインスタンスフィールドの違いとかsys.pathの使い方とか)については沢山身についてきたのですが、どうアウトプットして良いのか分からず・・・
アウトプットできないということはまだまだ完全に身についていないということなんでしょうねー。

現在家でやっている個人プロジェクトのソースコードを、バージョン管理システムで管理したいと思い立ちSourceForgeのプロジェクトとして立ち上げるとか、Google Codeのプロジェクトとして立ち上げるとかいろいろ考えました。
ですが、SourceForgeのプロジェクトにするとオープンソース化が義務付けられてしまいます。Google Codeも同様?な具合ですし。将来的にオープンにするとしても、今はまだクローズにしておきたいのです。それに、プロジェクトが認められるまで時間もかかります。
というわけで、せっかくの機会ですから、自分でサーバを立てて管理してみることにしました。

バージョン管理システムとして選んだのは、巷で有名の・・・やたら狭い巷ですが・・・とにかく、有名な「Trac」です。すでに何人もの先人の方が自宅で構築されてBlog記事を残してくださっているので、難易度も低そうです。腕ならしということで挑戦してみることにしました。

参考にしたリンクはこちら。
TracInstall – The Trac Project – Trac
Tracをインストールした - 偏った言語信者の垂れ流し 
CentOS5 で Subversion+Trac | cafe chantant blog


○まずはapache2を起動してみる
/etc/apache2/の中身と大格闘です。
自宅サーバの道しるべ【ポート設定(ファイアウォール)】
こんなページもあったのですが、そもそも書いてあることと実際のファイル配置などなどがまるで違うのであんまり役に立ちませんでした。httpd.confとapache2.confという二つのファイルがあったのですが、httpd.confの中身は何故かカラッポで、apache2.confにhttpd.confの中身がすべて書かれていました。どうしてこうなっているのかはわかりません。

設定内容はapache2とsubversionを連携するためにWebDAVパッケージをインストールして、Basic認証をかけたぐらいです。

Ubuntuを使用したので、パッケージのインストールのためにいちいちapt-getコマンドを使う必要もなく、付属のパッケージ管理GUIツールで一発です。DAVで検索すると、うまい具合にsubversion+WebDAV用のパッケージがあったので、そちらを選択してインストール。

それから、デフォルトではapache2はwww-dataというユーザとグループで起動するようになっているのですが、何となく名前が気に入らないという適当な理由から、webというユーザを新たにつくり、webユーザで起動するように変更しました。


○subversionをインストールしてみる
Subversionのインストールと設定(Apache編)
パッケージは例によってGUIからインストール。
リポジトリは/usr/local/svn/repositoryに作成してみましたが、これが後から考えると大失敗でした。
/usr/local/以下の中身はroot権限がないと操作できません。
必然的にディレクトリを作るのもsvnadmin createするのもsudoを使います。
その結果、リポジトリのオーナーがrootになってしまって、apache2からアクセスできないという問題が・・・結局、リポジトリをchown web:webとして解決しましたが、実にスマートではありません。/home/web/svn/repository/というふうに配置するべきでした。

Linux系OSの難しいところって、インストール先を選択する自由度が高いところと、アプリケーションのリソースに対するユーザ権限管理ですねー。としみじみ思い知らされました。

ちなみに設定はhttpd.confの末尾に書けとかmod-webdav.confの末尾に書けとかいろいろ指示があったのですが、/etc/apache2/conf.d/というスニペットコードを置くディレクトリが最初から定義されていたので、そちらにsvn.confファイルを作成してそこで制御することにしました。こっちのほうがアプリケーションごとに設定がまとめられて楽かなーと。


○最後にTrac
最後にTracです。
先ほどのSubversionの失敗を生かすために、/home/web/trac/以下にインストールしてみました。
Tracをインストールした - 偏った言語信者の垂れ流し
まったく内容を理解せずにこちらの方が紹介されている方法をそのままコピーでどんどんインストール。
ただし、Apache2の設定内容だけはコピーできなかった(そのままコピーすると、/svn/repository以下に公開しているリポジトリへのアクセスもtracのWSGAApplicationが拾ってしまうので、リポジトリが見れない)ので、/etc/apache2/conf.d/trac.confファイルを作成し、以下のように設定しました。
WSGIScriptAlias /trac /home/web/trac/trac.wsgi
<location login="" trac="">
#Basic認証の設定
AuthType Basic
AuthName "Trac login password"
AuthUserFile /いえないよ/.いえないよ.passwordfile
Require valid-user
</location>
こうすると、/trac以下がtracに、/svn/repository以下がWebDAVに制御されるので、きちんと両方にアクセスできます。それから、basic認証をLocation /trac/loginに対してかけてみました。
trac-admin permission add akisute TRAC_ADMIN
このコマンド入力によって、私は管理者権限を得る!
あとはユーザ権限の編集や、チケットシステムの設定は、tracトップページのAdminボタンからできるので非常に簡単です。いちいちtrac-adminで全部ユーザ権限を制御したりというのは面倒ですからね。


○VirtualBoxの設定
Ubuntuが仮想マシン上で動いているので、VirtualBoxのネットワーク接続設定を行わないと、いくらルータがポートを開いていてもポート80番にアクセスできません。
404 shin1のつぶやき ないわー NotFound: VirtualBox上のUbuntuの設定(Network)
#181 (Inability to ping from guest) - VirtualBox 
VirtualBoxのホスト<>ゲスト間接続にはNATとホストのネットワーク機器としてブリッジを用いて接続する方法の種類がありますが、面倒じゃないNATを選択しました。NATを使うとPingが通らない(ICMPというプロトコルが使えない)らしいのですが、特に困っていないのでこのままNATで続行です。

設定内容は、ホストの80番をゲストの80番にポートマッピング。これだけです。


○接続チェック
サーバー監視【無料】 
ホームページテスト【外部からの表示確認】
こんなすばらしいサービスがありましたので、さっそく外部から接続できているか試してみます。

WS000154.JPG

できました!!


○ひとまずこれで完成ですが
会社からはプロキシをはさんでいるので、Subversionのリポジトリの取得は出来るのですがコミットが出来ません。
ただのにっき(2005-08-02)
どうやらプロキシが知らないHTTPメソッドを使用するから(HTTP REPORTとか)みたいです。
セキュリティ上の問題もあるので、Subversionに対してHTTPS通信を使えるようにしてみるつもりです。
#3 - Subversion w/ DAV over HTTPS on woody , SSH越しにルータの設定 , RSS関係で細かいところ
日々の試行と実験: subversionやwebdavでSSLを有効にする
HOWTO - Apache2 + Subversion + SSL - Ubuntu Forums


○それでは
気合入れてソース書くぞー!!
手短な更新になってしまいますが・・・
このたび、自分のプロジェクトを管理するために、Ubuntu(Virtual Machine) + apache2 + SVN + Tracという構成で、自宅にサーバを設置してみました。
はじめは仮想マシン上に無線LAN接続で無理矢理つなげたサーバだったので不安定きわまりなかったのですが、LANケーブルを引いたり設定をいじったりと大騒動した結果、土日二日まるまる使って、ようやく安定してきました。
クローズドな鯖なのでURL等の公開はできませんけど・・・

後日、サーバを立てる際に苦労した点などを共有いたしたいと思います。

どうでもいいんですが、そろそろ忍者ブログのブログエディタ、Firefox3に対応してくださいませんかね?
http://www.fckeditor.net/
ここのfckeditorという奴を使っているみたいなのですが、最新のビルドのデモを試してみた結果、バグもなく快適に使えました。外部のエディタなんだからライブラリ差し替えるだけでいいのに、どうしていつまでも対応してくださらないんでしょう?
正式版が17日に出ますので、それが出てもまだ直っていなかったらさすがに文句を言おうと思います。
近頃はよくほか弁ことほっかほっか亭の分裂が話題になったりしますが、
私にとって弁当屋といえばオリジン弁当です。
今日は昼頃からどうしようもないぐらいひどい腹痛に悩まされて2時間ぐらい全く仕事が出来なかったので、一体全体どうしてこんなに今日はひどい日なんだろうと思いながら家に帰ってきたら、

「iPhone」について | ソフトバンクモバイル株式会社

なるほどね、虫の知らせだったわけですね。
なんにせよ、ついにソフトバンクがやってくれました。これで何の悔いもなくDocomoからおさらばできます。
ソフトバンクはサービスがひどいとよく言いますが、そういう人に限ってDocomoを一筋10年使っているんだとか、ソフトバンクなんて使ったこともないけどひどそうだから嫌だというチャレンジングじゃない人が多いです。
日本で最初にiPhoneを売るというチャレンジングな目標を達成したソフトバンクの心意気を買う意味でも、私は喜んでソフトバンクに乗り換えてお金を払おうと思ってます。

独占契約ではないので、Docomoがまだチャンスをうかがっているとか言う話も聞きます。昔の私なら素直に喜んでいたのですが、今ではとても喜べません。むしろ、他社の猿マネかと悲しくなります。よほどSoftBankからでるiPhoneの仕様がひどい(GMailやGoogle MapsなどのGoogleのサービスではなく、Yahooのサービスを強制的に使わされるとか)ものでなければ、SoftBankに乗り換えます。それでさんざん嫌な目に遭ったならDocomoに頭下げて戻ってくればいいわけで。ちょっと情けないですけど。

これで3G iPhoneが9日のWWDCで3発表されるのが決定的となったわけですが、今一番の懸念事項が、ジョブズが今回の「リーク」にキレて発表を取り下げたりしないかと心配です・・・w

衝動的にCVSのサーバーが欲しくなったので、このあいだUbuntuを入れたノートマシンをサーバーにしてCVSを立ち上げることにしました。

24時間起動しっぱなしのサーバーにするためには、まずはセキュリティ対策からですよね。

友人の皆様方にサーバーを立てるにあたってのセキュリティ対策についてお伺いをたてると、まずは何はなくともポートを閉じろとのお達しを受けましたので、危険そうなポートを閉じることにしました。
IWindowsで使うポートとセキュリティの落とし穴 
サーバは仮想OS上のUbuntuですがホストOSがWindowsなので、Windowsの危険ポートからまず排除しなくてはなりません。
137-139と445が危険らしいので、真っ先に閉じます。と思ったらルーターの初期設定できちんと閉じられていました。NEC、なかなかやりますね。って、これぐらい基本か。それから135も危険らしいのですが、このポートを閉じてしまうとWindowsはなにも出来なくなる(フォルダの共有もできなくなる?)と友人から指摘されたので、135は閉じないことにしました。その代わり、リモートからのログインを遮断しました。

それから友人Tさん曰く、SMTPとTFTPのポートも危ないらしいので、この二つも閉じておくことにしました。どうせ私はWebメールしか使わないので、SMTPなど不要です。
TCP/UDPポート番号一覧 
SMTPは25、TFTPは69ですね。これもルーターで遮断です。

ポートを閉じましたから、いよいよ次はUbuntuでサーバを起動しましょう。
と思ったら、Linux付属のファイアウォールの設定もした方がいいみたいです。
自宅サーバの道しるべ【ポート設定(ファイアウォール)】 
ここで紹介されているOSはFedoraですけど、たぶんUbuntuにも似たような設定があるに違いありません。
今日はここまでにして後日試してみることにします。

引き続きGoogle App Engine上でアプリケーションを作成しています。
前回のエントリーの地点で画面のレイアウトはほぼ出来ているのですが、一つだけ物足りない点があります。
それは「中央ペインのサイズがリサイズできない」ことです。
私のイメージとしては、右側に幅300ピクセルの情報表示バーを出して、中央のメイン表示部分のサイズはウィンドウのサイズに応じて自在に変化するようなつくりにしたかったのですが、どうもうまくいきません。

これはどうやらCSSだけではなくてJavaScriptを用いて解決しなくてはならない問題のようです。

JavaScriptをプロジェクトの中で使うときに、一番気になるのが「名前空間の衝突」です。
たとえば今回のケースでは、中央ペインのサイズを変更するJavaScript関数を作るわけですから、「resize_center_pane」とかそういう感じの名前をつけたくなります。ですが、「resize_center_pane」なんてありがちな名前、世界のどこかの人が必ず別の場所で使っているわけです。すると同じ名前で別の関数が定義されますから、妙な動作が起きてしまいます。

これを防ぐために、Javaではパッケージの仕組みがあり、Pythonではモジュールの仕組みがあるのですが、JavaScriptではそういう仕組みが一切ありません。・・・困りました。

と思ったらあっさり問題解決です。
めざせ生涯現役!: JavaScript と名前空間 
なるほど、JSONの記法を用いてJSONでもなんでもなくてタダのオブジェクトの作成時に使う決まり事記法だったみたいです・・・無知ですみません・・・新規にオブジェクトを作成して、その子要素として関数を持たせていけばいいわけですね。

早速真似してみました。

var HBenpitsu = {
	version: '0.1.0',
	author: 'akisute'
}

これでばっちりです!

さて、名前空間の問題が解決したところで、本題の「中央ペインのサイズを制御する」処理に入ります。
まずは右側ペインの横幅を外部CSSで定義します。
あとはwindow.onloadとwindow.onresizeのタイミングで、「中央ペインの横幅を、document.widthから右側ペインの横幅を引いた値にする」処理を追加してやればいいだけですね。
簡単楽勝。さっさとやっちまいましょう。

HBenpitsu.resize_pane_center = function() {
	var pane_center = document.getElementById("pane_center");
	var pane_right = document.getElementById("pane_right");
	var width_pane_right = String(pane_right.style.width);
	width_pane_right = width_pane_right.match(/\d+?/i);
	pane_center.style.width = 
	(document.width - parseInt(width_pane_right)) + "px";
}

ところが
これが
動きません!


Firebugを立ち上げて1行ずつデバッグしてみたのですが、なんと「var width_pane_right = String(pane_right.style.width)」の返り値がnullになっています!そんな馬鹿な!!何度CSSファイルを見直しても間違いなくwidthプロパティは定義されています。困りました。

調べること十数分、原因らしきものを発見です。
[暴満館] JavaScriptによるCSSの操作 
この長々としたソースコードと説明のなかに、
document.styleSheets[ sheetindex ].cssRules
こんな一文が出てきます。CSSを参照しているみたいですが・・・document.styleSheets?
Firebugで参照してみると、あ、あった。

TO000051.JPG

なるほど。外部CSSを参照するときにはこのdocument.styleSheetsを見る必要があって、Element.styleで参照しているのは、HTMLタグ要素のstyle属性だったんですね。勉強になりました。

原因もわかりましたし、外部CSSを参照するにはそれなりにテクニックが必要そうだということもわかりましたので、そろそろ外部JavaScriptライブラリを導入して、問題を解決してみようと思います。

 

しばらく簿記の勉強にかまけてGoogle App Engineを触ってなかったら
基礎基本からほとんど忘れてしまいました・・・
Templateの使い方を思い出さないと・・・
カレンダー
03 2024/04 05
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
ブログ内検索
最新コメント
[11/13 DSLR-A850]
[08/29 逆援助交際]
[08/23 クンニ]
[08/22 熟女]
[08/19 痴漢]
はてなブックマーク
プロフィール
HN:
akisute
性別:
男性
職業:
システムエンジニア
趣味:
ゲーム・東方・ニコ動。あと散歩。
バーコード
推奨環境

横幅900px以上、Firefox 3, Safari 3, Opera 9.5, Chrome 0.2以上。IE7ギリギリ対応。IE6未対応。

忍者ブログ [PR]