「開発環境向上」カテゴリーアーカイブ

slenium2で大量のデータと写真をCSVでフォームから入力する[php]

今回はテストツールSleniumでWEBに用意したフォームにデータ入力していきたいと思います。

まずSleniumをダウンロードします。Sleniumは役割ごとにSleniumRCとかSleniumIDEとかいろいろ分かれていて最初は何をダウンロードしていいか分からず難しいですね。
今はRCとかIDEは使わず、Selenium WebDriverが最新みたいですが、Slenium2と言ったほうが分かりやすい気がします。
私はPHPでテストを書きたかったので、Sleniumクライアントは今もメンテが続いているfacebook/php-webdriverを使うことにしました。

インストールはcompserを使うのがいいです。

というcomposer.jsonを作って、

を実行すれば必要なファイルがダウンロードされます。composerがない場合は

で取得してください。

sleniumのローカルサーバーも立ち上げておきましょうね、http://selenium-release.storage.googleapis.com/index.htmlから最新版のselenium-server-standalone-x.xx.x.jarファイルをダウンロードして起動しておきます。

と打てば起動しますので、テスト中は立ち上げっぱなしにしといてください。

ではPHPでテストを書きます。

firefoxが立ち上がってgoogle検索されます。

ではURLを自分のWEBフォームに変えて、データをCSVから呼び出し繰り返し実行するようにします。

私の環境はMacなのでCSV読み込みで文字化けしたため事前にutf-8にCSVを変換しました。さらに改行が読み込まれなかったのでauto_detect_line_endingsをtrueにしていますが必要ない場合もあるでしょう。

でcsvファイルを読み込んでいます。得られたデータを次々にフォームに入れていきます。

こんな感じでファイル名からファイルアップロードもできます。

いけましたか?たぶん、最低限これだけでいけると思うのですが、いけてなかったら教えて下さい。さくさくデータが自動入力されるのを見ると感動的ですよ。

それでは充実したテストライフを!

 

 

 

 

超早起き型のススメ

6226051400_9f29fc36a4_m

ライフハーック!

私はフリーランスなので、好きな時間に仕事ができるという利点があります。一番自分にあった時間の使い方を探しているうちに今の朝型にたどりつきました。朝のうちに仕事をするのはとっても効率がいいです。

どうして朝型がいいか

スケジュールが迫ってくると私の場合、焦ってしまって失敗も多くなるし、体調も悪くしがち。でも、朝に仕事を終わらせることで余裕を持って仕事に取り組めるというものです。前倒しにすることになるのでプレッシャーから開放されるのが一番でかいです。

会社員の人にも朝型をおすすめします。ただ私は会社にいるころ、ほとんど始発に近い電車でよく出社していましたが、これはあまり良い印象を与えた記憶がないような・・・。会社員の人はほどほどに。でも会社員でもフリーランス的に働きたいならぜひこの記事を読んで参考にしてみてください。

リンク:毎朝、定時より30分前にきっちりした身なりで出社し、新聞を読むことの価値が理解できない環境で働く人ってかわいそうだなぁ。

フリーランスだからこそ朝型

具体的にどれぐらい朝早いかというと、仕事時間がどんどん早い時間にシフトしていって、5年位前からだいたいのペースは

月曜日 PM10:00就寝 〜 AM1:00 起床
火曜日 PM10:00就寝 〜 AM3:00 起床
水曜日 PM10:00就寝 〜 AM5:00 起床
木曜日 PM10:00就寝 〜 AM1:00 起床
金曜日 PM10:00就寝 〜 AM3:00 起床
土曜日 AM0:00就寝 〜 AM5:00 起床
日曜日 AM0:00就寝 〜 AM7:00 起床

な感じです。別に曜日で決めてるわけではないのですが、分かりやすくテーブルにしてみました。基本的に、太陽が昇るまでにその日の仕事を終わらせてしまいます。そうすると、日中が空きます。半日は空けておく必要があります
なぜなら子供が熱をだしたり、人が遠方から会いに来たり、疲れてバタンキューしたり、大切なことがたくさんあるからです。
もし余裕がない日に上記のことが発生すれば間違いなくスケジュールが守れなくなる、それはフリーランスにとって致命的です。
余裕があれば新しいことを勉強したり、打ち合わせを重ねてクオリティをあげたり、新規案件をいただいて見積もりしたりを日中のうちにすればいいので、暇になることはないです。

朝型になるには

ではどうやって生活習慣が身についたのでしょうか。いくつか原因を考えてみました。

1.早起きしたくなるようにする
2.自分を甘やかす
3.寝る前の時間を大切にする

1.早起きしたくなるようにする

正直に告白しますと、最初に早起きになっていったのは遊ぶためでした。それも、ネットゲーム、そう、フリーランスの貴重な時間を蝕む悪魔のような遊戯のためでした。その頃、子供が生まれ、日中は育児でゲームが出来なかったことから、嫁・子供の寝静まった朝方に起きてゲームをしていたのです。今ではネットゲームはしていませんが、朝に仕事が終わると子供が起きてくるまでの間にちょこっとスマホゲームを楽しむことがあります。褒美というわけです。
子供がいるからこそ、一人で集中できる時間を作ったわけで、逆に一人暮らしだと早起きの習慣は難しいだろうと思います。いきなりハードルをあげるようですが、結婚して子供を作ると早起きしやすくなると思います。

2.自分を甘やかす

何時に起きよう、などとはっきりした目標をたてる必要もありません。目覚まし時計も必要ありません。[ノンレム睡眠]の時に無理やり起きると頭が働かないので何の意味もないからです。また覚醒はしたけど体がだるい、どうしても動かない、という時は延長してかまいません。無理やり起きることは本当に意味がないと思います。ちなみに昼間に10分〜20分程度仮眠をとるのはおすすめです。

リンク:コーヒーと仮眠の効果をいいとこ取りした裏技「コーヒーナップ」とは?

3.寝る前の時間を大切にする

早く起きるために一番重要なこと、それは早く寝ることです。私は布団に入って10秒もたたずに寝入ることができるので、のび太君にも勝っていると思います。重要なのは床に入る前の2時間は頭を興奮させない。つまり、仕事や友人とのおしゃべりはその時間帯はせず、風呂に入りテレビをみて歯を磨きましょう。あとは禅の気持ちです。

最近気づいたこと

自分の生活習慣を「漁師みたいな生活だな」と言われたことがあります。確かに、自分の父親は漁師で、3時くらいから漁に出て太陽が昇る頃にその日の仕事が終わっていました。知らずのうちに心地よい生活リズムが父と同じだったというわけです。

 

【PHPStorm】FTPアップロードでタイムスタンプが更新できないエラー

PHPStormのFTPアップロードで

Failed to change timestamp of the file ‘xxxxxxx’

というエラーが表示されることがありました。

詳細なログをみてみると

org.apache.commons.vfs2.FileSystemException: Could not set the last modified timestamp of “sftp://xxxxxxxxxxxxxxxxxxxxx”.

ちなみに詳細なログをとるには、Help>Configure Debug Log Settingsのリストにcom.jetbrains.plugins.webDeploymentを加えると、Help>Show Log in FinderでDeproymentに関するログが見ることが出来るようになります。

ログみてもよくわからなかったのですが、どうもMDTMコマンドにサーバーが対応していないとか、そんな問題らしいです。深くは調べてないです。

エラーをなくすには、Tools>Deproyment>OptionsPreserve files timestampsのチェックを外すといいです。

参考:FTP: support UTIME commands to change files timestamps (MFMT or MDTM currently used)

 

【PHPStotm】FTPのアップロード・同期化の設定

PHP開発環境統合エディタのPhpStorm、とってもいいですね!JavaScriptの開発にもPHPの開発にも重宝しています。
今までEclipseNetBeansなどのIDEは重すぎる割りに使いこなすのが難しく使えていなかったのですがPHPStormはストレスを感じることなく使えています。
日本語化がされていない、有料ソフト、といった事で躊躇もありましたが今年の買って良かったNo.1ですよ。

気に入っているのはFTP/SFTPを使ったファイルアップ機能です。
自分は開発中に実際のサーバーにアップロードしながら確認するタイプなので、編集即FTPアップロードは自分にとっては必須です。
PHPStormは自動でアップロードしてしかも最新ファイルを上書きしないようにできるのです。

リモートサーバーの設定

まずプロジェクトを作ったらToolsメニューからDeproyment>Configuration…を選び、FTPの設定をしましょう。
この辺はいろんなところで書かれてあるので割愛。こことか。
ポイントはMappingタブでドキュメントルート以下を扱う場合でもしっかりサーバーのドキュメントルートとWEBルートに”/”を入れておくこと。
Mappingを指定しておかないと同期化できません。

一番右のRemoteHostをクリックするかTools>Deployment>Browse Remote Hostでサーバー上のファイルが見えるようになっていればまずはFTPの設定はOK。

Automatic Uploadの設定

次にファイル編集を保存すると同時にFTPにアップロードされるようにします。
ToolsメニューからDeproyment>Automatic Uploadにチェックを入れるだけです。

ファイルを保存するとFTPのログにアップロードされたと出てきます。もしファイルパーミッションなどで失敗していればちゃんとログで分かるのでチェックしてみてください。

2014年6月14日追記:

PHPStormは保存せずに終了したとき、一定時間操作しなかった時など自動でファイルを保存します。そのため、予期しないタイミングでサーバーにアップロードされることがありますので場合によってはAutomatic Uploadを有効にしない方がいい時もあります。

2014年10月6日追記:

PHPStormから別のアプリケーションに切り替えた時にも自動でセーブされるようです。だから意図していない時によくあがってしまうんですね。Deproyment>Options…のUpload changed files automatically to the default serverをAlwaysにしていればセーブと同時に常にアップロードも行われますがOn explicit save actionにしていれば明示的にセーブした時だけ、Neverにすればアップロードは行われません。
感覚的にはセーブした時だけアップロードするのが良さそうなのですが、後で説明するPHPStorm以外のアプリで作ったファイルの同期がセーブしたタイミングで行うようになるので、そっちの方はAlwaysの方が断然分かりやすいんですよね。
共同しているサーバーだとAutomaticUploadは使わず、自分だけのサーバーに常に同期する設定にして開発し、Gitなどで共同サーバーに反映させるのがいい気がします。

アップロード前に自動でチェック

自動でアップロードしていると、サーバー上のファイルが最新だった場合、上書きして消してしまうこともあります。

そこでToolsメニューからDeproyment>Options…を選び、ダイアログのWarin when uploading over newer file:を設定しましょう。
チェック種別を選んでNotyfy about remote changesにチェックを入れておきます。

これでFTP上のファイルと比較を行い何かが違っていたらダイアログでどうするか聞いてくるようになりました。

フォルダ以下を同期化する

ちなみにAutomatic Uploadを使っているとあまり使うことがないのですがファイル・フォルダ以下を同期化することもできます。
ローカルのプロジェクトのファイルやフォルダを右クリックしてDeproyment>Sync with Deployed to … を選択します。
比較のダイアログがでてきて、ローカルとリモートで差のあるファイルの一覧がでます。
しかも選択すればdiffの内容が分かりやすく表示され、どちらを残すかもファイルごとに選んで一括処理できるんです、すごい。
ただし、どちらかに無いファイルについては比較が行われないぽいです。

あれは出来ないのかな?

NetBeansだと、フォルダに画像ファイルを放り込んだだけで自動でFTPアップロードしてたんですけど、Phpstormでは出来ないのかな?まだ見つけられてません。

2014年6月14日追記:

ここみてたらありました。
[Preferences] – [Deployment] – [Options] – [Upload external changes]
で出来ました!ファインダーにファイルを放り込んだり、移動したりして数秒後にはちゃんとサーバーにも反映してます。超絶便利!