ドメインを使ってローカル環境にアクセスする件

ドメインをブラウザURLバーに入力し、リモートサーバーと同じ感覚でアクセスする方法をご紹介します
localhostやポート番号は使いません

xamppをインストール

xamppは「xampp」で検索して下さい。
URLが変わってなければここにあります
インストールする場所はCドライブ直下がオススメです

xamppにサイトを入れる

C:\xampp\htdocs\15g.jp
に入れます。15g.jpは例ですので、好きなフォルダ名を入れてください。

バーチャルホストの設定

C:\xampp\apache\conf\extra\httpd-vhosts.conf
を変更します
最後に

DocumentRoot “C:/xampp/htdocs/15g.jp”

を追加して下さい。

hostsの設定

C:\Windows\System32\drivers\etc\hosts
の最後に
127.0.0.1 15g.jp
と追加して下さい。
管理者権限がないと書き換えが出来ません。
よくわからない場合は、
・hostsをデスクトップ等にコピー
・変更
・元の場所に移動
で書き換えることが出来ます。

ローカルサーバーの立ち上げ

C:\xampp\xampp-control.exe
を管理者権限で起動し、「apache」の横にある「開始」または「run」などをクリックします。

アクセス

URLバーに「http://15g.jp」と入れればローカルの
C:\xampp\htdocs\15g.jp\index.html
にアクセスできます

wordpressの場合は
127.0.0.1/phpmyadmin
にアクセスし、データベースを作成
wpconfig.phpも書き換えて下さい(localhostの場合はそのままでok)
更に、ローカルサーバーの立ち上げでapacheと同じように、mysqlも立ち上げます

tensorflowで学習の中断・再開

今回は「学習の中断・再開」です。学習データの保存と読込を行います。
tensorflow自体の導入方法は前回をご覧ください。

前回に引き続きmnistを使います。

基本的な機能だけの紹介になりますので、
詳細は公式リファレンスをご覧下さい。

mnistのこの部分を変更します。

中断・再開機能を追加するとこうなります。

作成されるファイルは以下になります。
my-model-xxx:xxxにはステップ数が入ります。
checkpoint:作成したモデルのファイル名が保存されています。checkpoint自体の名前を変更することもできますが、今回はデフォルトで行きます。

では、コードを順に見て行きましょう。

Saverクラスを作成します。max_to_keepは中断ファイルの作成数です。デフォルトは5で、古いものから削除されます。
学習の推移を見たい場合は、この数値を増やすよりステップ数の間隔を広げたほうが良いと思います。(そもそもtensorboard使ったほうがいい気も済ますが)

モデルの有無で分岐させます。

最後に保存されたモデルファイルを呼び出します。

checkpointファイルがない場合。

以上です。
実際はmodel、checkpoint用のディレクトリを作成した方がよいでしょう。
また、checkpointは作成されているけどmodelファイルがない、等の場合はエラーになりますがその辺りは割愛しています。

python備忘録

言語名の由来は蛇ではなくモンティ・パイソン(テレビ番組)

文の終わりのセミコロンは不要

コメントは行頭に #

複数行は
”’
シングルコーテーション
3つで囲む
”’

インデントが{}の変わりになる
if true :
print(‘ifの中’)
print(‘ifの外’)

help()
ヘルプの起動

シグナルを送信する:キー入力等で命令を送ること
ctrl+c 終了
ctrl+z バックグラウンドに送る
psやfg等を使って戻る

関数
all(iterable)
全てtrueならtrue。and()と同じ。

any(iterable)
いずれかtrueならtrue。or()と同じ

bin(int)
整数を渡して2進数を返す

dict(object)
辞書型データの作成

map(int,[1,2])
[1,2]
第一引数は関数を指定
リスト(配列)等の第二引数を渡すと、すべての要素に対して第一引数の処理をしてくれる。foreachみたいな感じ。

oct(int)
整数を受け取って8進数を返す

open(filename[, mode=”r” [, bufsize]])
ファイルの読み込み
modeは読み込みが”r”、書き込みが”w”

reversed(seq)
要素を逆順に取り出すイテレータ (reverse iterator) を返します。 seq は __reversed__() メソッドを持つか、シーケンス型プロトコル (__len__() メソッド、および、 0 以上の整数を引数とする __getitem__() メソッド) をサポートするオブジェクトでなければなりません。

デバッグ用
repr(object)
str(object)
print(any)
pprint(any) オススメ!

tuple([iterable])
タプルの作成
tuple(‘abc’) は (‘a’, ‘b’, ‘c’) を返し、 tuple([1, 2, 3]) は (1, 2, 3) を返します。

定数
None
Nullのこと。noneではない
bool(None)
falseが返る

false
数値では0や0.0、Noneもfalseになる。

演算子
+ 文字列結合
a ** b aのb乗

ブール演算子
x or y
x and y
not x
!bool エクスクラメーションマークで真理値反転は使えない。比較演算子ではイコールと組み合わせて使える
|や&はビット演算になるので基本使わない

比較
<, <=, >, >=, == 等、いつもの
!= 等しくない
is 同一のオブジェクト
is not 同一のオブジェクトでない

数値
複素数型
complex、多分そうそう使わない

イテレータ型
container.__iter__()
iterator.__iter__()
どちらもイテレータを返す?

iterator.next()
コンテナ内の次の要素を返します。

シーケンス型
str unicode list tuple bytearray buffer xrange

リストは [a, b, c] のように要素をコンマで区切り角括弧で囲って生成します。
タプルは a, b, c のようにコンマ演算子で区切って生成します (角括弧の中には入れません)丸括弧で囲っても囲わなくてもかまいませんが、空のタプルは ()のよううに丸括弧で囲わなければなりません。要素が一つのタプルでは、例えば (d,) のように、要素の後ろにコンマをつけなければなりません。

辞書型
dict(one=1, two=2)
dict({‘one’: 1, ‘two’: 2})
dict(zip((‘one’, ‘two’), (1, 2)))
dict([[‘two’, 2], [‘one’, 1]])
以上は全て
{“one”: 1, “two”: 2}
が返る

文字列型について
string.replace(str, old, new[, maxreplace])(原文)
s 内の部分文字列 old を全て new に置換したものを返します。 maxreplace を指定した場合、最初に見つかった maxreplace 個分だけ置換します。

文字列置換
a = string.replace(“abc”, “a”, “”)
“bc”

datetime型
日付や時刻

collections
コンテナ型
collections.Counterはカウント系の作業で便利

正規表現re
import re
prog = re.compile(pattern)
result = prog.match(string)
progを使い回す

findall() はパターンにマッチする全てにマッチ
search() は最初の一個だけ

比較
diff
+とか-とかで差分表示
import difflib as dl
diff = dl.ndiff([“one”,”two”,”three”],[“ore”,”tree”,”emu”])
print ” “.join(diff)

math
数学関数
複素数は扱えない
cmath
複素数関数

ランダム色々
http://docs.python.jp/2/library/random.html

パス
import os
#カレントフォルダを取得
a = os.getcwd()
#ファイル名のみ取得
print(os.path.basename(path))

switch-case文は存在しません。

ifでtrueの時に記述なしはエラーになるので、passと書く
if value_1 == “Python”:
pass
elif value_1 == “python” and value_2 == “izm”:
print unicode(“2番目の条件式がTrue”)
elif value_1 == “IZM” or value_2 == “PYTHON”:
print unicode(“3番目の条件式がTrue”)

foreachはこう
for value in for_sample:
print value

range()でfor nextのように
for num in range(100):
print num
if num == 10:
break

# 複数行のコメントアウト例
”’か”””になる
”’
print “test 3”
print “test 4″
”’

import

from ファイル名 import クラス名など。*で全て
ファイルは同じフォルダに置くか、パスを通しておく
どちらでもない場合は、その場でパスを通す
import sys
sys.path.append(‘/path/to/dir’)

#import本体
#testmod.py
class testclass:
def __init__(self):
print “create testclass”
def testmethod(self,str):
print “call testmethod”
print str
#main.py
if __name__ == “__main__”:
import testmod
testclass1 = testmod.testclass()
testclass1.testmethod(“1”)

from testmod import testclass
testclass2 = testclass()
testclass2.testmethod(“2”)

RPGツクールの画面が小さい時

RPGツクール、色々なゲームが出ていて楽しいのですが、いかんせん画面がちっさい。
600×480では画面の1/4しかありません。
フルスクリーンにすれば良いのですが、諸事情でフルスクリーンにしたくない、縦画面でエラーが出る(私です)場合は、windows標準の「拡大鏡」アプリが意外とオススメです。
一度お試しあれ。

1.オプションは歯車マーク

2.変動率を100%に設定

3.200%に。これで恐らく問題ない程度に拡大表示されると思います。

html・cssの表示の崩れる原因

・ローカルにキャッシュが残っている。

・サーバーにキャッシュが残っている。

・拡大・縮小表示している。

・IE6はcssをimportする時の読み込み順が代わることがある。

・IEにはイントラネット内だけ互換表示という機能がある。「ツール」→「互換表示設定」→「イントラネットサイトを互換表示で表示する」から解除可能

・何らかの理由でUAが変わっている。

・何らかの理由でブラウザがおかしくなっている。

他多数。

 

形態素解析を使う その5 フリガナを振ってみる

ふりがなを振るツールを作ってみました。

Igoで形態素解析、結果を色々して表示しています。

残念ながら「晴れ」は「ハレ」と送り仮名ごとルビが付いてしまう、精度がやや悪いなどの欠点がありますが、今後改良予定。

とりあえずver.0.0.1はこれにて完成。

無題

 

(画像は天気予報にフリガナを振ったもの)