忍者ブログ
  ちゃんとカテゴリ分けされておりませんので、 記事をお探しならブログ内検索が便利です。 ご活用くださいませー+.(≧∀≦)゚+.゚
Admin*Write*Comment
[1]  [2]  [3]  [4]  [5]  [6]  [7

×

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




pythonのseleniumでWEBのテストを行う方法です。
Firefoxに関する記事はいっぱいあるし、特にseleniumさえ導入できればすぐに使えるので問題ないのですが、Chromeになると情報が少ないので載せておきます。

大前提としてChromeさんをインストールしておいてね。

次に、ドライバをインストール。
zipを解凍して出てくる「chromedriver.exe」を任意のディレクトリに配置します。

前支度はこれくらい。
意外と簡単でした。

ユーザエージェントとプロキシを変更して、ハンドリングする場合のサンプルを掲載しておきます。

from selenium import webdriver

options = webdriver.ChromeOptions()
options.add_argument("--user-agent=Mozilla/5.0 (Linux; Android 4.2.2; SHL24 Build/S2040) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1650.59 Mobile Safari/537.36")
options.add_argument("--proxy-server=localhost:8080")
options.add_argument("--disable-prompt-on-repost")
driver = webdriver.Chrome(r'C:\chromedriver.exe', chrome_options=options) 
driver.get("https://www.google.co.jp/")

add_argument()はおそらくみたとおり、chrome.exeの起動オプションがそのまま使えそうです。


参考文献
http://www.ericdlarson.com/misc/chrome_command_line_flags.html
http://www.mazn.net/blog/2014/07/08/1371.html
http://yuichi.tea-nifty.com/blog/2008/12/googlechrome-c0.html
http://www.yoheim.net/blog.php?q=20130402

拍手

PR



Host 'hostname' is blocked because of many connection errors.
Unblock with 'mysqladmin flush-hosts'
MySQL :: MySQL 4.1 リファレンスマニュアル :: A.2.5 Host '...' is blocked エラー

MySQLでよく見るエラーです^^
私はバッチ系の人なので、並列処理をうまくできなかったり、サーバのスペックを見誤ると大量に出たりします。

いつもはまってしまうことが2店あります++。

このエラーはクライアント側で見ることができます。
ですのでmysqladminコマンドはクライアント側でやってしまいがちですが、サーバ側で実施しましょう^^

も一つ、マニュアル通り'mysqladmin flush-hosts'をじっしするとたいていエラーになります。
これは'mysql'と同じくログインを必要とするため、たいていは下記のようになります。
mysqladmin flush-hosts -uroot -p

拍手




5.5.15リリースの記事を書いている間に5.4.31もリリースなんてことになっていました。。。
http://php.net/archive/2014.php#id2014-07-24-2

なんとなく、悔しいのでこちらもコンパイルしてみます。
http://notebook.mor-maid.info/server/language/php/5.4.31.html

まったく同じようにコンパイルが通りました^^

拍手




PHP 5.5.15がリリースされたみたいですemoji
http://php.net/archive/2014.php#id2014-07-24-1

ということで早速コンパイルしてみましたーemoji
http://notebook.mor-maid.info/server/language/php/5.5.15.html

例によってそれだけの話です
リリース概要とか日本語訳してみたかったけど、それほど誤訳力あるわけじゃないし、
このあたりが限界なのです…emoji

拍手




これもすぐ忘れてしまうのでメモするのです。。。
手が空いたらCookieとか、もうちょっと武装します。
# -*- coding: utf-8 -*-
import pycurl
import StringIO

body = StringIO.StringIO()
header = StringIO.StringIO()
url = "http://localhost/"


ch = pycurl.Curl()
ch.setopt(curl.URL, url)
ch.setopt(pycurl.USERAGENT, "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:30.0) Gecko/20100101 Firefox/30.0")
ch.setopt(ch.PROXY, "http://localhost:8080/")
ch.setopt(ch.CONNECTTIMEOUT, 5)
ch.setopt(ch.TIMEOUT, 10)

ch.setopt(curl.WRITEFUNCTION, body.write)
ch.setopt(curl.HEADERFUNCTION, header.write)
ch.perform()

html = body.getvalue()
header = header.getvalue()

ch.close()

拍手




あと少しでリリースかしら?

http://distrowatch.com/?newsid=08514

CentOS7もRC番だし、ほぼ同時に解禁になるかもー

拍手




あるプロジェクトでsqlite3を使用してみようとおもって、導入したはいいものの
想定より、並列作業が発生したり、管理レコード数が伸びてしまい、パフォーマンスが
発揮できなかったのでMySQLへ移行しようと思いました。

その際、SQLの違いでスムーズにリストアがいかなかったので
あれこれこねくり回してしまった結果のメモです。

 db_file=sqlite.dmp
 grep -v 'PRAGMA' ${db_file} > ${db_file}.tmp; cat ${db_file}.tmp > ${db_file}
 sed -e 's/TRANSACTION//g' ${db_file} > ${db_file}.tmp; cat ${db_file}.tmp > ${db_file}
 sed -e 's/"//' ${db_file} > ${db_file}.tmp; cat ${db_file}.tmp > ${db_file}
 sed -e 's/"//' ${db_file} > ${db_file}.tmp; cat ${db_file}.tmp > ${db_file}
 sed -e 's/AUTOINCREMENT/AUTO_INCREMENT/' ${db_file} > ${db_file}.tmp; cat ${db_file}.tmp > ${db_file}
 grep -v 'sqlite_sequence' ${db_file} > ${db_file}.tmp; cat ${db_file}.tmp > ${db_file}
 grep -v 'CREATE INDEX' ${db_file} > ${db_file}.tmp; cat ${db_file}.tmp > ${db_file}
 rm ${db_file}.tmp
INDEXは無視です。
形式が違うので、こちらは必要に応じて後から手動で追加です。
そのほか、sqlite3は主に、INTとTEXTなので、場合によってはvarchar()にしたほうがいいと思います。
取り急ぎ、MySQLへ持ってきたかったので、かなり雑です。
テーブル構造によってはもっと複雑になるでしょう。
その時に直面したらまたUPDATEします。

拍手




ウィンドウズでハングアップしているバッチを停止しなくてはならない事案が発生しました。。。
ウィンドウズは正直苦手なのよね…
とはいえ、WindowsServer2003の構築経験があるので、この手の話はそう拒否るほどじゃないのがワ・タ・シ ←
最近PythonばかりなのでここでもPythonを使ってみることにします。
と、ここまで来てやっぱり不要という話になってしまったので、プロセスの確認までを備忘録的にあげておきます。


import subprocess
import csv
p = subprocess.Popen(
    ['TASKLIST',
    '/S',
    'remote-pc',
    '/U',
    'administrator',
    '/P',
    'pasword',
    # '/NH',
    '/FO',
    'CSV',
    '/V',
    '/FI',
    'CPUTIME lt 00:05:00',
    #'/FI',
    #'USERNAME eq administrator',
    '/FI',
    'IMAGENAME eq my_batch.bat'],
    stdout=subprocess.PIPE)
reader = csv.reader(p.stdout)
header = reader.next()
for row in reader:
    for i in xrange(len(row)):
        print header[i].rjust(25), row[i]
    print "-" * 60

p.stdout.close()

確認環境
Windows7 6.1.7601 Service Pack 1 ビルド 7601
Python2.7.6

拍手




WEB+DB PRESSという書籍を社内で購読しているのですが、
そこにPHPの実行環境を切り替える記事がありまして、
エンジニアの一人が導入できないって?っていうから
トライしてみました。

便利は便利なんですけど、これはネックになるかな?って思ったのが
  1. ApacheのLoadModuleを逐一手動で切り替える必要がある
  2. phpbrew自体PHPでできている
1.はconf.dなどで切り出して差し替えるなどしてほしかったなー★
モジュール先をシンボリックにしても大丈夫そうなのに…
2.はきついですね。。。
システム要件にphp5.3とあるので、5.3がデフォルトで入る環境でないと
結局自分でphpをコンパイルして導入することになるので、
その程度の知識があればphpbrewなんかなくても運用できそうだし、、、
phpbew自体がPHPってことはphpbrewでphpを切り替えると、
切り替えた後のPHPでphpbrewを動作させることになるので、
ドツボにはまることがあります。
※たとえば --oldオプションなどでphp5.1.6とか導入した場合
個人の意見としてはすごいナンセンスだと思います。。。

なにはともあれ、下記に導入した手順を載せておきまーす
# apache & mysql は導入済みが前提
# もし新規のサーバに入れるなら下記コマンドを実行するの
yum -y install httpd httpd-devel mysql mysql-server mysql-devel

# 依存パッケージのインストール
# 切り替えに使用するPHPはコンパイルして導入するみたいなので
# コンパイルに必要なモジュールをインストールしておきます
yum -y install gcc gcc-c++
yum -y install libxml2-devel
yum -y install bzip2-devel
yum -y install openssl-devel
yum -y install readline-devel
yum -y install libxslt libxslt-devel
yum -y install bison
yum -y install libtool-ltdl-devel
yum -y install libicu-devel
yum -y install flex
yum -y install patch
rpm -Uvh 'http://elders.princeton.edu/data/puias/unsupported/6/x86_64/libmcrypt-2.5.8-9.puias6.x86_64.rpm'
rpm -Uvh 'http://elders.princeton.edu/data/puias/unsupported/6/x86_64/libmcrypt-devel-2.5.8-9.puias6.x86_64.rpm'
rpm -Uvh 'http://apt.sw.be/redhat/el6/en/x86_64/rpmforge/RPMS/mhash-0.9.9-1.el6.rf.x86_64.rpm'
rpm -Uvh 'http://apt.sw.be/redhat/el6/en/x86_64/rpmforge/RPMS/mhash-devel-0.9.9-1.el6.rf.x86_64.rpm'

# wget のインストール
# 本家手順ではcurlを使用しているのですが、なぜかダウンロードができないので…
yum -y install wget
cd /usr/local/src

# PHP5.3に依存するみたい
# https://github.com/c9s/phpbrew/wiki/Requirement
# なのでここで5.3を入れてしまいましょう
cd /usr/local/src
test -f ./php-5.3.28.tar.gz || \
  wget 'http://jp1.php.net/get/php-5.3.28.tar.gz/from/this/mirror' -O ./php-5.3.28.tar.gz
test -d ./php-5.3.28 && \rm -rf ./php-5.3.28
tar zxf php-5.3.28.tar.gz
cd php-5.3.28
./configure \
  --prefix=/usr/local/php \
  --with-zlib \
  && \
  make -j2 && \
  make install
export PATH="${PATH}:/usr/local/php/bin"
# ==> PHP 5.3.28 (cli)
php -v 

# phpbrew のインストール
cd /usr/local/src
test -f phpbrew || \
  wget 'https://raw.github.com/c9s/phpbrew/master/phpbrew'
\cp ./phpbrew /usr/local/bin/phpbrew
chmod +x /usr/local/bin/phpbrew

# phpbrewの初期設定
/usr/local/php/bin/php /usr/local/bin/phpbrew init
if grep -q 'source ~/.phpbrew/bashrc' ~/.bashrc
then
  echo 'skip'
else
  echo 'source ~/.phpbrew/bashrc' >> ~/.bashrc
  echo 'export PATH="${PATH}:/usr/local/php/bin"' >> ~/.bashrc
  source ~/.bashrc
fi

# インストールできるphpのバージョン一覧
phpbrew known
# コンパイルオプションの一覧
phpbrew variants

# 複数バージョンのインストール
phpbrew install 5.5.12 +default +mysql +mb +ftp +apxs2
phpbrew install 5.4.28 +default +mysql +mb +ftp +apxs2
phpbrew install 5.3.27 +default +mysql +mb +ftp +apxs2 +intl


# 異なるバージョンへの切り替え
phpbrew switch php-5.5.12
php -v
phpbrew switch php-5.4.28
php -v
phpbrew switch php-5.3.27
php -v

# 切り替え環境の終了(元のPHPに戻る)
/usr/local/php/bin/php /usr/local/bin/phpbrew switch-off


# アンインストーる
\rm -rf ~/.phpbrew
\rm -f /usr/local/bin/phpbrew
実行環境
Scientific Linux6.4 (minimal)

参考サイト
https://github.com/c9s/phpbrew
https://github.com/c9s/phpbrew/issues/167
http://blog.mktime.com/archive/290.html
http://d.hatena.ne.jp/donbulinux/20091217/1261049589
http://hack.aipo.com/archives/324/
http://www.stuartmacfarlane.co.uk/configure-error-unable-to-detect-icu-prefix-or-no-failed-please-verify-icu-install-prefix-and-make-sure-icu-config-works

拍手




あたしとしては珍しくsqlite3を使ってみようと思い立ったのですb
Windows環境だし、そんなに複雑なトランザクションも必要ないし、ってところでー♪

と息巻いてみたもののいきなりエラーにあたる…

OperationalError: unable to open database file

なぜに開けなし!! <( ̄□ ̄;)>
ググっても、パスが間違っているか、書き込み権限系ばかり。。。
さんざん迷いに迷って、たどり着いたのが…
パスにマルチバイトを含んでいたからでした。。。
非常にお粗末・・・ぐぅ

と、いうことで
sqlite3.connect() の引数はユニコードで渡そうねって話でした。

実行環境
Windows7 6.1.7601 Service Pack 1 ビルド 7601
sqlite3 2.6.0
Python2.7.3

参考サイト
http://d.hatena.ne.jp/dayflower/20070123/1169546863
http://php-sql-gdgd.jugem.jp/?eid=60

拍手



ブログ内検索
カレンダー
03 2017/04 05
S M T W T F S
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
カウンター
最新コメント
最新トラックバック
プロフィール
+ハンドル+
y_ayamori(purple)
+職業+
IT系エンジニア
+すまい+
さいたま
バーコード
ブログパーツ
アバター
Copyright © アナログを愛するデジタル生活館 All Rights Reserved.
photo by Kun material by Atelier Black/White Template by Kaie
忍者ブログ [PR]