Home > 7 月, 2008

2008.07.31

Pythonのリストと、C言語の配列を比較

再び、PythonとC言語を比較してみよう。
今日はメモリ内の値を直接書き換えられちゃうC言語なお話。

Pythonでは [1,2,3] のような配列を 「リスト」 と呼び、中の要素は後で追加できる。

例えば、

    >>> a = []            #空っぽのリスト
    >>> a
    []
    >>> a.append(1)       #要素追加
    >>> a
    [1]
    >>> a.append(2)       #要素追加
    >>> a
    [1, 2]

1行目の宣言のようなものは Python では不要だけど、このように append というメソッドで後から要素を追加することができる。

 「えっ?! これって当たり前じゃないの?」

と思う人は 2.0系 エンジニアです(笑

(more…)

2008.07.29

Pythonは全部がオブジェクト(C言語でいうところの「ポインタ」なお話)

弊社に来年4月からやってくる新卒の学生に Python の勉強をしてもらおうと思っていたのだが、先日聞いたところでは大学で C言語 をやっているらしい。
それを聞いて Python の勉強はまだ良いから C をしっかりやって欲しいと伝えた。
C言語 は良い言語だ。C++ はもちろん、PHPも Java も他の言語も少なからず C言語 の影響は受けている。
Webサービスをやっているだけなら C言語 はほとんど使わないが、比較的余裕のある学生のウチに C を学べるのはとっても良いと思う。

今日は、C言語を学んだ人が最初に不思議に感じる「Pythonでは全てがオブジェクトとして扱われる」というお話。

(more…)

2008.07.25

cron用のMySQLダンプシェルスクリプト

データベースの情報をバックアップする際の選択肢のひとつとして
「cronで自動的にmysqldumpやpg_dump等のRDBMS特有のダンプコマンドを叩いて保存する」
という手段が挙げられます。

これは、バックアップの質としてはイマイチですが
専用ツールをインストールするような面倒な手間も無く、
いつも使っていてノウハウが蓄積されているコマンドで行うことが出来るため、
簡単なWebサービスや自前のサーバ等では、重宝する手段だと思います。

ただし、この方法を使う際に重要視したいのは、
「いい具合にバックアップする」という点です。

やり過ぎて手動のオペレーションが増えたり、自動化部分の安定性を損なってしまっては、
そもそも、cronで自動化・省力化する趣旨と反してしまいますし、
(※入念にバックアップをする必要がある場合は、気合を入れてサーバの体勢を整えて、かつ、mysql-zrm等の専用ツールを使うべきです)
やらな過ぎて、いざという状況で役に立たない場合も、これまた意味が無いものになってしまいます。

自分の場合は、過去、毎度毎度適当なシェルスクリプトを書いたり
かつ、cronを複数設定して、いい具合になるように調整していましたが、
その労力が勿体無いので、以下のような専用のシェルスクリプトを作成いたしました。

mysqldump4cron.sh

  • 【設定値解説】
    WEEKLY_TARGET_DAY_OF_WEEK … 週次の場合に保存される曜日を指定
    MONTHLY_TARGET_DAY … 月次の場合に保存される日付を指定
    DAYLY_MAX_LIFE … 日次保存ダンプファイルの保持期間を日数で指定
    WEEKLY_MAX_LIFE … 週次保存ダンプファイルの保持期間を日数で指定
    MONTHLY_MAX_LIFE … 月次保存ダンプファイルの保持期間を日数で指定
  • Linuxのみ対応、FreeBSDは現在非対応
    (対応する場合は、コチラの記事が参考になりそう)
  • MySQL用です
  • 異常系処理は実装無し、設定値を間違えないように注意して下さい
  • コメントがローマ字なのは、お恥ずかしい限りです

参考にして戴ければ幸いです。

それでは、大胆さの中にも慎重さがきらめくような、良きバックアップライフをお過ごし下さい!

2008.07.17

データマイニング基礎

クラウドマップではソーシャルブックマークのタグ付けデータを解析しています。これはいわゆるデータマイニングと呼ばれるもので、大量のデータの背後にある隠れた構造を露わにするものです。データマイニングの手法は多数提案されていますが、今日はその中で、最も基礎的で重要な手法である主成分分析(principal component analysis)とクラスタ分析(k-means clustering)について、さわりだけ紹介します。また、タグ付けデータに適用するとどうなるのかもお見せします(結論から言うと、これらの手法ではタグ付けデータをうまく解析することができません)。

■主成分分析を初めとするデータマイニング手法が行うことは、基本的には「データ圧縮」です。データの背後にある本質的な構造は、そのデータ自身よりも簡潔に記述できると想定できるからです。どのような制約の下で圧縮するかが手法の種類を決めると言えます。主成分分析の場合は次のようにデータ圧縮します:

(more…)

2008.07.16

Pythonにハマってきた…

ただいま、Pythonの本をバリバリと読書中。
脳内で「ああ、これは C言語 だとアレと同じだな」と翻訳しながら進めているけど、もし C言語 など他の言語を全く知らない人は大変だろうなぁと他人事のように感じてしまう。

また C言語 のような型をカッチリ決めてコーディングするのに慣れている人には、Pythonのような動的に型付けされる言語は違和感あるだろうなぁとも思う。
けど、アセンブラで組んだことがある人ならメモリサイズは気になるけど「型」なるものがある方が不思議で、メモリ空間にどう配置されているかがイメージできる人にとっては Python のような動的に型が変化する言語でも理解できる。

そういう意味では、様々な言語やハードウェアのちょっとした知識があると、理解の助けになるからお得だ。

以下、本を読んで他の言語と違うな~と感じたことをいくつか紹介。

(more…)

2008.07.10

プロキシサーバ squid で、アクセス元を隠蔽

プロキシサーバ

プロキシ(proxy)とは、代理という意味。つまりは代理サーバである。
簡単に(乱暴に?)言ってしまえば自分のPCからネットに直接つなぐのではなく、間に入って代理でネットにつなぐ役割をするサーバのこと。

簡単に図示すれば、以下のようになる。

  • 直接接続

      自分のPC - (インターネット) - 外部サーバ

  • プロキシ経由

      自分のPC - プロキシサーバ - (インターネット) - 外部サーバ

昔からある技術だけど、今みたいにブロードバンド化が進みそこら中に光回線が張り巡らされる以前は、プロキシサーバは「キャッシュマシン」として働きトラフィック軽減に役立つということで広く普及した。複数のPCがプロキシサーバを経由してネットを見に行く構成にしておくと、プロキシサーバにキャッシュがあればまずはそのデータを使ってページを表示し、キャッシュがない場合だけ外部につなぎに行く。別々の人が同じページを見るのであればキャッシュ化しておいた方が効率は良い、というわけだ。

またプロキシサーバは、ローカルPCの各種データが外部に漏れないように情報隠蔽機能としても活躍する。
どのPCからのアクセスであっても全てがこの「代理サーバ」からのアクセスのように見せることが可能になる。

また、プロキシサーバの機能を提供するアプリケーションは、アクセス制限も設定できることが多い。つまりは外部への接続を許可するかどうかをプロキシサーバでも管理できる。

ここでは「やりいか」のアイコンがかわいい squid を紹介。

(more…)

2008.07.09

google Lively を試してみた

昨日公開された google Lively  をさっそく試してみた。
これは 3次元(3D)オンラインソーシャルワールド だそうである。Second Life(セカンドライフ)の競合になるのか?と注目されそう。

いきなりブルーバック画面(OSごと落ちてしまうエラー画面)が表示されてビビってしまったけど、お手軽さは Second Life より格段に上。

これは「期待できる!」と意気込んだけど、自分で自由にカスタマイズや創作できる範囲は狭く、現状はそれっぽいものができるだけで終わってしまう。

もう少し、例えばスクリプトが走って動的な処理はできなくとも、3次元造形物ぐらいはアップできるようにしてもらえたら…

とはいえ、パーツショップのページは完成しているようなので、サードベンダーから何かが供給されるようになるのも時間の問題かな?
現状、サービスとしての品質は悪くないけど、自由度は高くないので今後に期待という感じ。

(more…)

2008.07.02

普及するのか?! google Gearsを取り上げる

公開直後の反響に比べて、対応アプリがほとんど公開されない google Gears を今週の勉強会で取り上げます。

コンセプトは中々面白く、しかしアプリケーションが Gears に完全対応するのは難しく、今後がどうなるのか全く読めない技術ですが、googleパワーで普及してしまうのでしょうか?

 
(more…)