スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

CentOSでPythonのバージョンアップ

CentOS5.6で、Python2.4をずっと使っていたのですが、
Python2.7にバージョンアップしました。
ですので、メモします。

1.Python2.7コードの取得とインストール
 Pythonのサイトからソースコードを取得します。
# wget http://www.python.org/ftp/python/2.7.2/Python-2.7.2.tgz
# tar -zxvf Python-2.7.2.tgz
# cd Python-2.7.2
# ./configure --prefix=/usr/local/python-2.7.2
# make && sudo make install

2.Python2.7にシンボリックリンクを作成
シンボリックリンクを作成します。
# sudo ln -s /usr/local/python-2.7.2 /usr/local/python
# vi ~/.bash_profile
PATH = /usr/local/python/bin:$PATH
export PATH
# source ~/.bash_profile

3.setuptoolsをインストールします。
 何かとインストールする際に重宝するsetuptoolsをインストールします。
# cd /usr/local/src
# sudo wget http://peak.telecommunity.com/dist/ez_setup.py
# sudo python ez_setup.py
 その際、proxy環境の場合は、
# export http_proxy=http://[proxy名]:[ポート番号]
 にてproxy環境を整えてください。
 また、ez_setupを取得して、以下のようなurllib2のエラーが出た時は、
urllib2.URLError:
 setuptoolsをez_setupと同じディレクトリに置いてください。
# sudo wget http://pypi.python.org/packages/2.7/s/setuptools/setuptools-0.6c11-py2.7.egg#md5=fe1f997bc722265116870bc7919059ea

参考:
 http://www.abetake.com/index.php?Python%202.6.2
 http://discypus.jp/wiki/?%A5%BD%A5%D5%A5%C8%2FBug%20Tracking%2Ftrac%2Fplugin%A4%CE%A5%A4%A5%F3%A5%B9%A5%C8%A1%BC%A5%EB

おわり。

テーマ : プログラミング
ジャンル : コンピュータ

pythonでのcgiデバックメモ(ubuntu10)

ubuntu10でのpythonによるcgiデバックメモ
(動作環境確認)

pythonは、デフォルトで入っていたはずなので、、、
入ってなければ、aptitudeまたは、Synapticパッケージマネージャーでいれます。

■ Apacheインストール
sudo aptitude install apache2
   (参考リンク : Ubuntu Tips/サーバー環境/Apache HTTP Serverを構築するには)

■ Apache関連
apache2.conf(httpd.conf)の場所
/etc/apache2/apache2.conf
cgi-bin デフォルト場所(cgiを置く場所)
/usr/lib/cgi-bin
apache log デフォルト場所
/var/log/apache2
apache再起動
sudo /etc/init.d/apache2 restart

■ 動作確認
cd /usr/lib/cgi-bin
sudo emacs test1.cgi     ←適当なエディタで、test1.cgiを作ります。

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

html = '''Content-Type: text/html



  Hello Python


Hello Python


上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。


'''

print html



sudo chmod +x test1.cgi
次に適当なブラウザで、localhost/cgi-bin/test1.cgiにアクセスします。


終わり。

テーマ : プログラミング
ジャンル : コンピュータ

CodeEvalのFizzBuzzをPythonでやってみた

転職したいなぁ、と思いつつ、放っておいたCodeEvalを見てみました。
CodeEvalで出されるお題をプログラムすると、自分がプログラムできますよぉー的なことを言えるみたい。
(ほんとかなぁ、でも、採用試験で、この結果を提出すると結構、面白いかも(^_^;))

使用方法は、
CodeEvalのサイトから、"Sign Up"を選択し、
自分の身分と、名前とメアドと認証コード(すっごい見づらい、、)をいれて、サインインします。

とりあえず、日頃適当に使っているPythonでFizzBuzzをやってみました。
読んでみると、んー、仕様が不親切。。。
エラーの場合はどうするか等書いてないなぁ、、、と思いつつ。
海外のコーディングなんてこんなもんかと、日本人の生真面目さを呪いつつ。

まぁ、とりあえず、こんな感じの仕様でした。
FizzBuzz
・値xが正のint Aで割れる場合は、"F"を出力する。
・値xが正のint Bで割れる場合は、"B"を出力する。
・A,B両方で割れる場合は、"FB"を出力する。
・1 から正のint N まで、xを数える。
・入力 : スペースで区切った以下の様なファイルが入る。
   A1 B1 N1 \n
   A2 B2 N2 \n
・出力 :  スペースで区切った値を標準出力する。(例は、サイトを参照)
 1 2 3 F ....
・ファイル名は、引数で受け取る。(一応shellで動かすと書いてあるので)
・プログラム成功時は、0を戻り値とし、それ以外は、、、(私は、-1にしました。。。)
・あと5秒以上かかったらダメ。 

ということで、しょぼいと思いますが、以下が私が書いたプログラム。
(自分でやる人は、見ないほうがいいかも)

# -*- coding:utf-8 -*-

import sys
import os

def fizzbuzz(line):
    try:
        ptst = ""
        vals = line.split(' ')
        if(len(vals) != 3):
            return False

        for cnt in range(1,int(vals[2]) + 1):
            valst = ""
            if cnt % int(vals[0]) == 0 :
                valst += "F"
            if cnt % int(vals[1]) == 0 :
                valst += "B"
            if valst == "":
                valst = str(cnt)
            ptst += valst + " "
        
        print ptst[0:len(ptst)]
        
        return True
    except:
        return False
        

if not os.path.exists(sys.argv[1]):
    sys.exit(-1)
    
f = open(sys.argv[1])

for row in f:
    if not fizzbuzz(row):
        sys.exit(-1)

sys.exit(0)

楽しみながらできますし、
情報処理試験ではわからないようなコーディング技術を試す分にはいいのではないでしょうか?
おわり。

テーマ : プログラミング
ジャンル : コンピュータ

[python] numpyでよく使うサンプルテクニック

pythonで、numpyというライブラリがあります。
numpyは、数値演算を行う場合非常に有効です 。

そこで、numpyは分かるけど、いちいちリファレンスを引くのが面倒くさいので、よく使うテクニック(?)を都度アップしていきます。
載っていなければここを参照。

- 配列の0埋め
  配列要素数を指定して、0を埋め込みます。
>>> import numpy as np
>>> # 配列要素数を5とし、それぞれに0を埋め込みます
>>> t = np.zeros(5)
>>> t
array([ 0.,  0.,  0.,  0.,  0.])
- 配列に値を代入
  簡単に値を一気に入れ込みます。
  ステップ関数を作るときに便利かも。 意外に使えるので、、、。
>>> # 始めに0埋めし、要素0~3までに1を代入します。
>>> import numpy as np 
>>> t = np.zeros(5)
>>> t
array([ 0.,  0.,  0.,  0.,  0.])
>>> t[:3] = 1
>>> t
array([ 1.,  1.,  1.,  0.,  0.])
- 等間隔の配列を作成
  等間隔の配列を作ることにより、x軸の作成等に結構使える

>>> # 0から0.5までを0.1間隔で配列を作成します
>>> import numpy as np
>>> t = np.arange(0,0.5,0.1)
>>> t
array([ 0. ,  0.1,  0.2,  0.3,  0.4])


テーマ : プログラミング
ジャンル : コンピュータ

[Python 入門] 自分用のまとめ

Pythonの自分用のまとめです。
Pythonをやるたびに更新していきます。

■ 基本的なこと
- 基本演算子
Cとか     python
+            +
-             -
/             /
*            *
!            not
- 比較演算子
a == b     aとbは等しい(文字列も対応)
a != b     aとbは等しくない(文字列も対応)
a < b      aはb未満
a > b      aはbより大きい
a <= b     aはb以下
a >= b     aはb以上

文字列の'< > <= >='は、サイズを比較しているようです。
例えば、
>>> a = "あいう"
>>> b = "かきく"
>>> if a <= b:
    print "aはb以下"
aはb以下
>>> b = "aiu"
>>> if a <= b:
    print "aはb以下"
出力なし
>>> b = "か聞く"
>>> if a <= b:
    print "aはb以下"
aはb以下
- 組み込み関数   (思いつき順) v2.7の組み込み関数リファレンス(英語)
import a                           a.pyを読み込む(読み込むには、pythonパスの設定が必要)
reload(a)                          aモジュールを再読込する。
                                     一度importで読み込んだら、reloadじゃないと変更しない。
print a                              aを標準出力する
type(a)                             aの型を取得する
repr(a)                             aが数値型の場合、aを文字列に変換する。
str(a)                               aが数値型の場合、aを文字列に変換する。
                                       reprとstrの違いは、ここを参照するとわかりやすい
round(a,b)                       小数点a以下を切り捨てる
len(a)                              aの長さを取得
int(a)                               文字列aをint型に変更。floatとかlong等も同じ感じ
max(a)                            配列aの最大値
min(a)                             配列aの最小値
open(a)                           パスaのファイルを開く ex) f = open("test.txt" , 'r')
- if文の基本 (意外にelifを忘れてしまうので、、、)
if val == a :
    print "valはaと同じ"
elif val == b :
    print "valはbと同じ"
else:
   print "valはその他"
- for文の基本
for val in vals :
    print val

break文は break
conitue文は continue
- ソースコードの改行
ソースコードの改行は「\」(バックスラッシュ)で改行できる。
a = 1+2+3+4+5+6+7 \
      + 8 + 9 + 10


■ 配列
- 簡単な配列の作成
arr = range(0,10)
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

■ 辞書 (Dictionary)

- 辞書の使い方
# 初期化
>>> dic = {}

# 要素の追加
>>> dic["en"] = "English"
>>> dict["jp"] = "Japanese"

# 要素の削除
>>> dic.pop("jp")
 'Japanese'
# 要素の確認
>>> dic.values()
['English']
 

■ クラス

- クラスを生成する 、コンストラクタを宣言する、メンバ変数に代入する
class testclass :
    # コンストラクタ
    def __init__(self , arg1)
        self.arg1 = arg1   # メンバ変数に代入(特に宣言する必要はない)

■ その他
- Python path の確認
import sys
sys.path
- 年月日の文字列表現 (datetime変換等に使う)
年 %Y  , 月 %m , 日 %d , 時 %H , 分 %M , 秒 %S
- 文字列をdatetime型に変換する
import datetime
>>> dt = "2011:04:01"
>>> datetime.datetime.strptime(dt,'%Y:%m:%d')
datetime.datetime(2011, 4, 1, 0, 0)
- ディレクトリのファイル一覧を取得する1
>>> import os
>>> os.listdir("検索するディレクトリ")
- ディレクトリのファイル一覧を取得する2(ワイルドカードを使用する)
>>> import glob
>>> glob.glob("検索するディレクトリ")
ex)
>>> import glob
>>> glob.glob("C:\\*.txt")
- パスからファイル名を取得する , ファイル名,拡張子,ディレクトリ名を取得する
>>> import os
>>> fbasename = os.path.basename("C://test.txt")
test.txt
>>> os.path.splitext(fbasename)
('test', '.txt')
>>> os.path.dirname("C:\\test.txt")
'C:\\'
 
- ファイルの存在を確認
>>> import os
>>> os.path.exists("C:\\test.txt")
True
- ファイル読込み
>>>for line in open('text.txt', 'r'):
>>>       print line

テーマ : プログラミング
ジャンル : コンピュータ

プロフィール

名前 :ss_9
紹介 :
20代はエンジニア、30代はプロ、40代は管理、50代は人脈。

Twitterボタン

最新記事
カテゴリ
AD
月別アーカイブ
RSSリンクの表示
RSSリンクの表示
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。