2013年3月21日木曜日

mac 10.8.3にcakePHP2.3.1をインストール

毎回別のエラーが出る。
・上の方のエラーは前に書いた、アクセス権限付与でOK。
・あと、.htaccessファイルもcakePHPのディレクトリからコピーする必要もある。
・あと、DebugKit pluginをgithubから落として、app/Plugin/DebugKitに入れる必要があり
・その後、/app/Config/bootstrap.phpのCakePlugin::load('DebugKit'); //Loads a single plugin named DebugKitと書いてある行のコメントを消す必要がある。

2013年3月10日日曜日

codeIQをやってみた

The Essence of Programming 結城 浩さんからのアルゴリズムの問題をやってみました。簡単だと思ったのですが、アルゴリズムとかまだ勉強できてないので合ってるのか分かりません。ミスしてる可能性もあります。一応確認したら出来てる感じでしたが。ただ、やっぱりアルゴリズムの問題はクイズ的だし面白いので、もっと勉強しようと思いました。codeIQにはこういうのが色々あるようなので色々見てみたいと思いました。

合ってなかったら残念です。

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

f = open('blendlist.txt', 'r')

blends = [] #[[a,[b,c,d]],[b,[d,e,f]]]
curryA = []
curryB = []

#blendsの作成
for blend in f:
    spices = blend.split() #[a,b]
    flag = False
    
    for spice in spices:
        if len(blends) > 0:
            for b in blends:
                if spice == b[0]:
                    flag = True
                    break
        if not flag: blends.append([spice,[]])
        flag = False

    for idxS in range(len(spices)):
        for idxB in range(len(blends)):
            if spices[idxS] == blends[idxB][0]:
                if idxS == 0: idxAdd = 1
                else: idxAdd = 0 
                if not spices[idxAdd] in blends[idxB][1]:
                    blends[idxB][1].append(spices[idxAdd])

f.close()

#curryA,Bの作成
cntA = 0
cntB = 0

for blend in blends:
    if not curryA and not curryB:
        curryA += [blend[0]] + blend[1]
        for b in blends:
            if not b[0] in curryA: curryB += [b[0]]
    else:        
        for idx in range(len(blend[1])):
            if blend[1][idx] in curryA: cntA += 1
            else: cntB += 1
        if cntA > cntB:
            if not blend[0] in curryA:
                curryB.remove(blend[0])
                curryA.append(blend[0])
        elif cntA < cntB:
            if not blend[0] in curryB:
                curryA.remove(blend[0])
                curryB.append(blend[0])
        cntA = 0
        cntB = 0    

#得点の計算
pntA = 0
pntB = 0

for blend in blends:    
    if blend[0] in curryA:
        for spice in blend[1]:
            if spice in curryA: pntA += 1
            for idxBlends in range(len(blends)):
                if blends[idxBlends][0] == spice:
                    blends[idxBlends][1].remove(blend[0])
    else:
        for spice in blend[1]:
            if spice in curryB: pntB += 1
            for idxBlends in range(len(blends)):
                if blends[idxBlends][0] == spice:
                    blends[idxBlends][1].remove(blend[0])

#Answerの作成
answer = ''

if pntA > pntB:
    curryA.sort()
    for spice in curryA: answer += spice + ' '
else: 
    curryB.sort()
    for spice in curryB: answer += spice + ' '
answer = answer.rstrip()
answer += '\n\n■得点\n'
answer += 'CurryA: ' + str(pntA) + '点\n'
answer += 'CurryB: ' + str(pntB) + '点\n'
answer += '------------------------------\n'
answer += '合計   : ' + str(pntA + pntB) + '点\n\n■ソースコード\n' 

f = open('curry.py','r')
answer += f.read()
f.close()

#answerの書き込み
f = open('answer.txt', 'w')
f.write(answer)
f.close()

2013年3月4日月曜日

せどり向けプレミア本・DVDの検索システムをつくってみた

せどりというのはご存知でしょうか?ブックオフで100円で買った古本は、アマゾンだと意外と高値で売れたりするというやつです。裁定取引ということでいいんでしょうかね。最近ですと電脳せどりといいまして、わざわざリアル店舗のブックオフに足を運ばずにインターネットで仕入れてアマゾンで売るということも行われているようです。実際せどりで仕入れる商品をどうやって探すのかというと、アマゾンで定価よりも高値なのにどんどん売れている商品を探すんです。アマゾンで売るわけだから、アマゾンで探すわけですね。

ということで、アマゾンで新品が売ってなくて、中古1点しか売れてない商品を探せるプログラムを作成しました。まあ巷に同様のプログラムは色々あるのですが、なんだかんだお金がかかりますので、自分で作ってみました。これを更に改良してみたいと思います。(ガンガンせどりをするつもりではありませんが)



ちなみに、先程このプログラムでみつけたDVDが楽天で一個だけあったので買ってみました。初せどり挑戦であります。今度売ってみます。

2013年3月2日土曜日

神様を発見しました

今日本当の神様をみつけました。