こんにちはkitaです。
今日は、前回に引き続きphpをコマンドラインで使用するときのオプションをいくつか紹介します。
コマンドプロンプトを立ち上げて次のコマンドを入力し、実行して下さい。
php -r “echo date(‘Y/m/d’);”
2011/11/07
日付を出力するphpコードをコマンドラインで実行することができます。またこの場合、phpタグは
不要です。
次にようなphpファイルを作成します。
test.php
/* create array */
$a = array(1,2,3);
var_dump($a);
これを次のように-sオプションを付けて、結果をtest.htmlに保存するようにして実行します。
php -s test.php > test.html
-sオプションを付けることで構文を見やすく色分けしハイライト表示されたソースを表示します。
上記の場合はtest.htmlにhtmlソースが入ります。
同様に、上記test.phpを使用し-wオプションを使用するとコメントと部分を削除したphpソースを
表示します。
php -w test.php
$a = array(1,2,3); var_dump($a);
最後に–rfオプションを紹介します。このオプションの使い方は、
php –rf 関数名 となり実行することで関数についての情報を知ることができます。
preg_matchについて調べてみましょう。
php –rf preg_match
Function [ <internal:pcre> function preg_match ] {
- Parameters [5] {
Parameter #0 [ <required> $pattern ]
Parameter #1 [ <required> $subject ]
Parameter #2 [ <optional> &$subpatterns ]
Parameter #3 [ <optional> $flags ]
Parameter #4 [ <optional> $offset ]
}
}
この結果からpreg_matchは第1,2引数は必須で引数は5つまで設定可能と言った情報を
知ることが出来ます。
このようにphpのオプションを使いこなすことでさらに効率良くphpを使いこなすことが
可能になるのではないかと思います。
kita PHP
こんにちはkitaです。
今日は、phpをコマンドラインで使用するときのオプションをいくつか紹介します。
まずphpをコマンドラインで実行するためにphp実行ファイルにパスが通ってるのを確認しましょう。
パスが通ってるのが確認できたらコマンドプロンプトを立ち上げて次のコマンドを入力して下さい。
php -h
phpで使用可能なオプションの一覧が表示されているのがわかります。
このうちいくつかを使用してみましょう。
というわけでまず以下のようなファイルを作成します。
test.php
<?php
echo 'hello';
これをコマンドラインで実行します。
php -f test.php
ここで出てきたオプションの-fはファイルをパースして実行するという意味です。尚このオプションは省略可能です。
それでは上記ファイルを次のオプションを付けて実行します。
php -l test.php
No syntax errors detected in test.php
ここで出てきた-lというのはシンタックスエラーのチェックをします。test.phpはエラー無しということです。
ではもしエラーがある場合どうなるのでしょうか?
以下のファイルを作成、実行します。
test2.php
<?php
echo 'hello;
php -l test2.php
PHP Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE in test2.php on line 3
Errors parsing test2.php
パースエラーが発生したのがわかります。
最後に-aというオプションを使用してみましょう。
-aを付けてphpを実行した場合、phpを対話モードで実行することが可能です。
それでは実行してみましょう。
php -a
Interactive mode enabled
対話モードが使用可能になりました。以下のように使用します。
php -a
Interactive mode enabled
echo 'hello';
^Z
hello
まずphpタグを入力し、その後phpコードを入力します。
そして最後はCtr+Zを入力することで、入力したphpコードを実行することができます。
この他にもphpには有用なオプションがあるのですがそれらはまた別の機会に紹介したいと思います。
kita PHP
こんにちはkitaです。
今日は、サクラエディタのマクロでJScrptを使ってみようかと思います。
その前にJScrptとは何かと言いますと、、マイクロソフト社製のスクリプト言語で
Windows上で動作します。
JScrptは言語としてはJavaScriptと互換性がありJavaScriptの関数がいろいろ使えたりします。
このJScriptがサクラエディタの中で使用可能なわけですが、条件があり、WSHが
インストールされていなければいけません。とは言ってもWindows98 以降のWindowsであれば、標準でインストールされています。
さて今回は、エディタを使用していて日付を挿入したい場合を想定してマクロを作成してみます。
var date = new Date();
var year = date.getFullYear();
var month = date.getMonth()+1;
month = ('0' + month).slice(-2);
var day = date.getDate();
day = ('0' + day).slice(-2);
Editor.InsText( year + '年' + month + '月' + day + '日');
これをdatetest.jsという名前で任意のフォルダに保存します。
そして、エディタ上で
ツール→名前を指定してマクロ実行 にて上記ファイルを選択、実行します。
すると、今日の日付が2011年09月02日だとすると、その日付がエディタに挿入されます。



上記ソースについて解説します。
1行目から6行目まではDateオブジェクトを作成し、年、月、日をそれぞれ求め、月、日が1桁であった場合は0で埋めるようにします。これは通常のJavascriptの書き方と変わりありません。
最後の一行がサクラエディタで文字列を挿入する書式です。
Editor.InsText(文字列);
このように、Javascriptの知識がそのままマクロ作成に活かせるので日々の作業の作業の効率化につながるかと思われますのでサクラエディタユーザーの方はぜひ活用してみて下さい。
kita Javascript
こんにちはkitaです。
前回に引き続きJavaのRobotクラスのサンプルを紹介します。
JavaのRobotクラスのキーボードの入力イベントの生成については前回紹介しました。
今回はマウスの動作をプログラムで再現できるものを紹介します。
(プログラムはWindows7で動作確認しました。)
import java.awt.Robot;
import java.awt.AWTException;
import java.awt.event.InputEvent;
public class Test2 {
public static void main(String[] args) {
Robot robo01;
try {
robo01 = new Robot();
robo01.mouseMove(150,40);
robo01.delay(500);
robo01.mousePress(InputEvent.BUTTON1_MASK);
robo01.mouseMove(60,40);robo01.delay(500);
robo01.mouseRelease(InputEvent.BUTTON1_MASK);
} catch (AWTException e) {
e.printStackTrace();
}
}
}
このプログラムをコンパイル、実行します。
コンパイル
javac Test2.java
実行
java Test2
実行するとどうなるかと言うと、デスクトップ左端上部にごみ箱がある状態かつその横にa.txtという
テキストファイルがあり、このテキストファイルをドラッグアンドドロップしてごみ箱に運びます。


プログラムの動作としては、ファイルa.txtを右クリックして選択(mousePress)、選択したまま座標を左に移動(mouseMove)、ごみ箱まで移動したらクリックを解除する(mouseRelease)という仕組みです。
このように、Robotクラスを使うことでマウスの動作の自動化が可能になるので応用すると日々の作業の効率化が可能になるのではないかと思います。
kita Java
こんにちはkitaです。
今回はJavaのRobotクラスのサンプルを紹介します。
JavaのRobotクラスというのは、マウスやキーボードの入力イベントを生成、つまり人間がデータを入力する動作をプロクラムで再現するためのものです。
実際どういったものが作れるかサンプルプログラムを通して見てみましょう。
今回はキーボード入力をプログラムにさせるものを作成します。
(プログラムはWindows7で動作確認しました。)
import java.awt.Robot;
import java.awt.AWTException;
import java.awt.event.KeyEvent;
import java.awt.event.InputEvent;
public class Test {
public static void main(String[] args) {
//Robotクラスのインスタンス作成
Robot robo01;
try {
robo01 = new Robot();
//windowsを押下したのと同じ状態にする
robo01.keyPress(KeyEvent.VK_CONTROL);
robo01.keyPress(KeyEvent.VK_ESCAPE);
robo01.keyRelease(KeyEvent.VK_CONTROL);
robo01.keyRelease(KeyEvent.VK_ESCAPE);
//notepad と入力
robo01.keyPress(KeyEvent.VK_N);
robo01.keyPress(KeyEvent.VK_O);
robo01.keyPress(KeyEvent.VK_T);
robo01.keyPress(KeyEvent.VK_E);
robo01.keyPress(KeyEvent.VK_P);
robo01.keyPress(KeyEvent.VK_A);
robo01.keyPress(KeyEvent.VK_D);
//notepad立ち上げ
robo01.keyPress(KeyEvent.VK_ENTER);
//notepad立ち上げ中 deleyにより指定時間スリープ
robo01.delay(500);
//helloと入力
robo01.keyPress(KeyEvent.VK_H);
robo01.delay(100);
robo01.keyPress(KeyEvent.VK_E);
robo01.delay(100);
robo01.keyPress(KeyEvent.VK_L);
robo01.delay(100);
robo01.keyPress(KeyEvent.VK_L);
robo01.delay(100);
robo01.keyPress(KeyEvent.VK_O);
robo01.delay(1000);
//Ctrl+Aで全選択
robo01.keyPress(KeyEvent.VK_CONTROL);
robo01.keyPress(KeyEvent.VK_A);
robo01.keyRelease(KeyEvent.VK_CONTROL);
robo01.keyRelease(KeyEvent.VK_A);
//Ctrl+Cでコピー
robo01.keyPress(KeyEvent.VK_CONTROL);
robo01.keyPress(KeyEvent.VK_C);
robo01.keyRelease(KeyEvent.VK_CONTROL);
robo01.keyRelease(KeyEvent.VK_C);
robo01.delay(1000);
robo01.keyPress(KeyEvent.VK_RIGHT);
robo01.keyRelease(KeyEvent.VK_RIGHT);
//helloという文字列を貼り付け
robo01.keyPress(KeyEvent.VK_CONTROL);
robo01.keyPress(KeyEvent.VK_V);
robo01.keyRelease(KeyEvent.VK_CONTROL);
robo01.keyRelease(KeyEvent.VK_V);
} catch (AWTException e) {
e.printStackTrace();
}
}
}
このプログラムをコンパイル、実行します。
コンパイル
javac Test.java
実行
java Test
notepadが立ち上がり、helloと書き込まれ、さらにその後またhelloと書き込まれます。



mainメソッドに入ってすぐ、Robotクラスのインスタンスrobo01を作成、このプログラムの主役になります。
このrobo01にキーボードの操作をさせる形になります。
上から順に見ていきましょう。
robo01.keyPress(KeyEvent.VK_CONTROL);
robo01.keyPress(KeyEvent.VK_ESCAPE);
robo01.keyRelease(KeyEvent.VK_CONTROL);
robo01.keyRelease(KeyEvent.VK_ESCAPE);
とありますが、これはrobo01がCtrlキーとEscキーを押したのと同じイベントを発生させます。
するとどうなるかというとWindowsメニューが表示されます。keyPressの引数にキーコードを入れることで人間がキーボードを操作したのと同じイベントを発生させているわけですね。
さまざまなキーコードが用意されていますので詳しく知りたい方は下記URLを参照して下さい。
http://download.oracle.com/javase/1.4.2/docs/api/java/awt/event/KeyEvent.html
続くプログラム内では、Windowsメニューでnotepadと入力、Enterキー押下そしてnotepadが立ち上がり、helloと入力します。入力の仕方は上記で説明しました通りキーコードをkeyPressにて入力していきます。
そして立ち上がったnotepad内でhelloとある文字列を全選択しhelloのすぐ右にカーソルを移動しペーストします。
ところどころに見えるメソッドdelayはプログラム実行中にスリープさせるためのもので引数に入れた時間(ミリ秒)によりスリープ時間が変わります。
この秒数は、0 から 60,000 ミリ秒の範囲にない場合は例外が発生します。
今回はRobotクラスを使用したサンプルのうちキーボードの入力を受け取るもののみ紹介しました。
Robotクラスにはこの他にも機能があるのですが、それは別の機会に紹介したいと思います。
kita Java