jQuery(ジェイクエリー)は、JavaScriptのコーディングを強力に支援するライブラリです。

jQueryとは、JavaScriptのコーディングを強力に支援するライブラリです。

$関数

jQueryのコードで重要なコンセプトの1つは、いわゆる ‘$’ 関数である。’$’ は実際には ‘jQuery’ 名前空間での別名 (alias) である。
例 1: jQuery は文字列のトリミングのための関数を提供している。この関数は次のように使用できる。

 

str = " foo ";
jQuery.trim(str); // "foo" を返す

あるいは、次のように使うこともできる。

 

str = " foo ";
$.trim(str);

 

これらは等価である。’$’ を ‘jQuery’ の代わりに使うことはアドホックな規約であり、jQueryライブラリへの手っ取り早いアクセス法と見なすことができる。例 2: クラス ‘foo’ を持つ全てのパラグラフを選択し、別のクラス ‘bar’ をそれら全てに追加する。

$("p.foo").addClass("bar");

例 3: ページのDOM木が構築された直後に関数 ‘myfunc’ を実行する(jQueryの用語では ready handler と呼ぶ)。

$(function() {
  myfunc();
});

 

これは例えば次のような形で使用する。

$(function() {
  // CSSクラス oddStripe と evenStripe を使って文書内の全テーブルをストライプにする。
  $('tr:odd').addClass("oddStripe");
  $('tr:even').addClass("evenStripe");
});

 

ロード方法

jQueryは通常単一のJavaScriptファイルとして存在し、その中に全ての共通DOM、イベント、エフェクト、Ajax関数が含まれている。次のようなマークアップを使って、任意のWebページにこれを含めることができる。

<script type="text/javascript" src="/path/to/jQuery.js"></script>

jQueryの最新安定版は、Google、Microsoft、EdgeCastなどの運用するCDNを使ってロードすることもできる。この方法では、Web上での広汎な利用におけるレイテンシの改善といったCDNの利点を享受でき、自身でコピーをホストする必要も無くなる。
CDNからのロード方法は次のように、単にCDN上のURLを指定すればよい。

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>

 

また、Google AJAX Libraries APIでは次のような記述も利用できる。

<script type="text/javascript" src="http://www.google.com/jsapi"></script>
<script type="text/javascript">google.load("jquery", "1.8");</script>

 

使用法

jQueryには2種類のインタラクションがある。

・jQueryオブジェクトのファクトリメソッドである $ 関数を使う。これらの関数は「コマンド」とも呼ばれ、連鎖可能であり、それぞれがjQueryオブジェクトを返す。
・$.をプレフィックスとする関数を使う。これらは「ユーティリティ関数」であり、本来jQueryオブジェクト上で動作しない。

複数のDOMノードの操作をする典型的ワークフローは、まず $ 関数をCSSセレクタ文字列を伴って呼び出し、HTMLページ内の0個以上のエレメントを参照するjQueryオブジェクトを返す。このノード群はjQueryオブジェクトまたはノード群自体にインスタンスメソッドを適用することで操作できる。例えば、

$("div.test").add("p.quote").addClass("blue").slideDown("slow");

 

このコードは、divタグのクラス属性がtestのものとpタグのクラス属性がquoteのもの全てについて、クラス属性blueを追加し、それらをアニメーション付きでスライドダウンさせる。$およびadd関数は一致する集合を決め、addClassとslideDownは参照しているノード群に作用する。
$.が前置されたメソッドは簡便なメソッドだったり、グローバルな属性や振る舞いに影響を与える。例えば、次の例はjQueryにおける高階関数であるeachを使っている。

$.each([1,2,3], function() {
document.write(this + 1);
});

この場合、文書に 234 を書く。
$.ajaxとリモートデータのロードと操作に対応するメソッドを使ってAjaxルーチンを実行することもできる。

$.ajax({
  type: "POST",
  url: "some.php",
  data: {name: "John", location: "Boston"},
  success: function(msg){
  alert( "Data Saved: " + msg );
}
});

このコードはsome.phpにパラメータ name=John&location=Boston をつけて要求し、その要求が正常に完了したとき、レスポンスを表示する。

su コマンドとsudo コマンドについて

su コマンドとsudo コマンドについて
こんにちは。
ただいまLinuxの勉強中でございます。
root権限に推移する際、そのマシンの設定にもよりますが、以下のコマンドで行うと思います。
1.su –
2.sudo -s
3.sudo su –

suコマンドとsudoコマンドの違いがよくわからないのもあるんですが、
こちらのコマンドの意味はそれぞれどういう点で異なっているのでしょうか?
初心者でもわかりやすい説明をいただければ幸いでございます。

 

■回答

1.su[-][ユーザー名]
=別のユーザーでシェルを起動する。別のユーザーに切り替えると思えば良い。
※ユーザー名を省略するとrootを指定したことになる。
※-オプションを付けると指定したユーザー自身がログインした時と同じ状態でシェルを起動する。

2.sudo[ユーザー名]
=指定したユーザーでコマンドを実行する。
※ユーザー名を省略するとrootを指定したことになる。
※−sオプションを付けると環境変数 SHELLで指定されたシェルを実行する。

3.コマンドの合体版

プレゼンタとは? プレゼンタはオプションです。必要ない場合は、ビュー を直接使用し、表示の前処理のロジックをコントローラに含めることができます。

プレゼンタとは?

プレゼンタはビューの生成に必要なロジックを含むクラスです。 コントローラがユーザ入力を処理し、必要なアクションを処理すると、 プレゼンタにビューに必要なデータを取得するように処理を引き継ぎます。 プレゼンタはデータの操作を一切すべきではありませんが、データベースの呼び出しや他のデータの取得、 ビューの生成に必要な準備の操作を含めます。

プレゼンタはオプションです。必要ない場合は、ビュー を直接使用し、表示の前処理のロジックをコントローラに含めることができます。

 

プレゼンタの作成

最初は APPPATH/classes/presenter/index.php で、空のプレゼンタを作成します:

class Presenter_Index extends Presenter
{
}

そして、app/views/index.php に対応するビューを作成します:

foreach ($articles as $a){

echo ''.$a->title.'';

}

ビューの名前

プレゼンタとそのビューはデフォルトでは同じ名前を共有します。 プレゼンタ Presenter_Index のビューは app/views/index.php になります。 アンダースコアはクラスと同じように、つまり、ビュー Presenter_Some_Thing は、 app/views/some/thing.php になります。
このデフォルトの動作は、そのビューを使うプレゼンタの中で、静的でない $_view プロパティにプレゼンタの中でビュー名 (サフィックスなしで) 設定するか、プレゼンタの生成時に独自のビュー名を渡すことで オーバーライトできます。

最後に、プレゼンタをコントローラから生成します:

$presenter = Presenter::forge(‘index’);

これですべてを設定しました; しかし、まだデータがビューに渡されていません。 $title の文字列と $articles の配列を渡す必要があります。 プレゼンタにこのデータを与える view() メソッドを追加します:

class Presenter_Index extends Presenter
{

public function view()
{
$this->title = ‘Testing this Presenter thing’;

$this->articles = Model_Articles::find(‘all’);
}
}
これで完了です。

コードの中でビューとプレゼンタは交換可能です。コントローラのアクションからプレゼンタを返すことも、 テーマのパーシャルとしてプレゼンタをセットし、ページテンプレートのセクションにアサインすることもできます。プレゼンタの基本的な API は ビューと互換性があります。これは、大きなコードのオーバーホールなしに、 ビューとプレゼンタを簡単に交換することを可能にします。.

関数をビューに渡す

プレゼンタからビューに特定の関数を渡すには、匿名関数または クロージャ を使います:

// プレゼンタの中
class Presenter_Index extends Presenter
{

public function view()
{
// 値を返すクロージャをセット
$this->somevar = function() { return “somevalue”; };

// これも同様に機能します
$this->set(‘othervar’, function() { return “othervalue”; });

// 引数付きのクロージャには、エンコーディングを避けるために set_safe を使います
$this->set_safe(‘echo_upper’, function($string) { echo strtoupper($string); });
}
}

// presenter view の中で使える:
echo $somevar, $othervar; // 出力: “somevalue” “othervalue”
$echo_upper(‘this string’); // 出力: “THIS STRING”
クロージャはフィルタリングに関して値と同様に扱われます。 値を返すクロージャの場合、set() メソッドを使えば、 その値はフィルタリングの設定に従ってエンコードされます。 もし、上記の例のような修飾子の場合や、 返される値がエンコードされるべきでないクロージャの場合は、 set_safe() メソッドを使うか、 set() メソッドの第 3 引数に false を指定して下さい。

クロージャがフィルタされないことを期待しているレガシーアプリケーションでは、 アプリケーションの設定ファイル config.php を編集し、次のキーを追加します:

/**
* クロージャをフィルタするかどうか
*/
‘filter_closures’ => false,
セキュリティ

ビューと同じように動作します。プレゼンタでセットされたものはすべて、オフにしない限り、出力エンコードされます。 ビューで使うのと同じようにプレゼンタでも set($name, $value, $encode) メソッドが使えます。 詳細は、 ビューのセキュリティのセクション にあります。

高度な使い方

他のメソッド

同じビューを解析する別の方法がある場合は、デフォルトの view() メソッド以外に複数のメソッドをプレゼンタに追加することができます。 そうするためには、第 2 パラメータにメソッド名を指定した Presenter::forge() メソッドを追加します:

// 上記の例からプレゼンタ上の other_method() メソッドを呼ぶ
$presenter = Presenter::forge(‘index’, ‘other_method’);
before と after メソッド

いくつかのデータをプレゼンタのすべてのメソッドで使う必要がある場合、before() または after() メソッドをコントローラと同様に追加します。

ビューの変更

デフォルトでは $this->_view にビューオブジェクトがアサインされます。 プレゼンタに独自の set_view() メソッドを作成し、 $this->_view にオブジェクトをセットすることで置き換えることができます。
しかし、そのオブジェクトはプロパティを設定でき (テンプレートのデータとして使われます)、解析されたコンテンツをレンダリングし返す __toString() マジックメソッドを持たなくてはなりません。 言い換えると、View クラスの振る舞いとの互換性が必要です。
ビューの名前は $this->_view プロパティから取得できます。

別のビューファイル、または既存のビューオブジェクトを使う

forge() メソッドの第 4 引数を指定すると、プレゼンタのインスタンスに対して別のビューを使い、 どのビューを読み込むかを決定する自動機構を使わないように指示することもできます:

// ‘index’ ビューの代わりに ‘other/index’ ビューを使う
$presenter = Presenter::forge(‘index’, ‘other_method’, null, ‘other/index’);

// ビューオブジェクトを直接渡すこともできる
$view = View::forge(‘other/index’);
$presenter = Presenter::forge(‘index’, ‘other_method’, null, $view);
ビューへのアクセス

プレゼンタの外部からビューオブジェクトにアクセスするには、 get_view() メソッドを使用します。

他の名前空間から、または Presenter_ 接頭辞のつかないプレゼンタを使う

これらを使用する場合、名前空間を含む、完全なクラス名で forge() を使う必要があります。 その場合、デフォルトの命名規則はしばしば期待したように動作しませんので、 $_view プロパティまたはまたはカスタムビュー名を渡すことが推奨されます。

変数が文字列かどうかを確認 – is_string()

is_string関数

bool is_string ( mixed $var )
指定した変数が文字列かどうかを確認します。
引数
$var
文字列かどうかを確認する変数を指定します。
返り値
指定した変数が文字列の場合は trueを、その他の場合は、falseを返します。

PHP: preg_match()  正規表現の使い方

リファレンス

文字クラス 量指定子 その他のメタ文字
[abc] a,b,cいずれかの1文字 * 0回以上の繰り返し . 改行以外の1文字
[^abc] a,b,c以外の1文字 + 1回以上の繰り返し ^ 行頭
[A-Z] 大文字のアルファベット1文字 ? 0回または1回の出現 $ 行末
[0-9] 数字1文字 {n} n回の繰り返し | いずれかの文字列
[a-zA-Z0-9] アルファベットか数字1文字 {n,m} n回以上、m回以下の繰り返し () グループ化
[!-~] 半角文字1文字 {n,} n回以上の繰り返し \ 直後のメタ文字をエスケープする
\w アルファベットか数字かアンダースコア1文字 修飾子(末尾のデリミタの後ろに記述)
\W アルファベット、数字、アンダースコア以外の1文字 i 大小文字の違いを無視する
\d [0-9]と同じ s シングルラインモードにする(.が改行にマッチする) PHPのみ
\D [^0-9]と同じ m マルチラインモードにする(^と$が改行の直前直後にマッチ)
\s 空白1文字 ([ \r\t\n\f\v] と同じ) u マルチバイト(UTF-8)対応 PHPのみ
\S 空白以外1文字 ([^ \r\t\n\f\v] と同じ) g 繰り返しマッチングを行う JavaScriptのみ
\n 改行
\t タブ
※メタ文字は \ ^ . $ * ? | ( ) [ ] { }
※[ ]内はメタ文字は通常の文字として扱われるのでエスケープする必要はありません。
※量指定子に続けて?を記述すると、最短でのマッチングを行います。

関数リファレンス(PHP)

preg_match()
preg_match_all() 繰り返しマッチングさせたい場合
preg_replace()マッチング箇所を別の文字列に置換させたい場合

 

サンプル(PHP)

正規表現 使用例
郵便番号 /^[0-9]{3}-[0-9]{4}$/ if (preg_match(‘/^[0-9]{3}-[0-9]{4}$/’, $str)) {
電話番号 /^[0-9]{2,4}-[0-9]{2,4}-[0-9]{3,4}$/ if (preg_match(‘/^[0-9]{2,4}-[0-9]{2,4}-[0-9]{3,4}$/’, $str)) {
Emailアドレス |^[0-9a-z_./?-]+@([0-9a-z-]+\.)+[0-9a-z-]+$| if (preg_match(‘|^[0-9a-z_./?-]+@([0-9a-z-]+\.)+[0-9a-z-]+$|’, $str)) {
全角空白のトリム /^ *(.*?) *$/u $str = preg_replace(‘/^ *(.*?) *$/u’, ‘$1’, $str);
半角+全角空白のトリム /^[\s ]*(.*?)[\s ]*$/u $str = preg_replace(‘/^[\s ]*(.*?)[\s ]*$/u’, ‘$1’, $str);

【コマンド】Linuxファイルを圧縮・展開する(拡張子.gz,.tar.gz)

【 ファイルを圧縮・展開する(拡張子.gz,.tar.gz) 】

ファイルを圧縮・展開する(拡張子.gz,.tar.gz)

$ gunzip gzip_file.gz
$ gzip target-file
$ tar zxvf package.tar.gz
$ tar czvf package.tar.gz package-dir

 

gz方式はLinuxでよく使われるファイル圧縮・展開方式である。圧縮ファイルには「.gz」という拡張子が付く。展開には「gunzip」または「gzip -d」を用いる。

$ gunzip gzip_file.gz
または
$ gzip -d gzip_file.gz

元の圧縮ファイルは削除され,展開したファイルだけが残る。圧縮ファイルも残したい場合は,

$ gunzip -c gzip_file.gz > gzip_file
または
$ gzip -dc gzip_file.gz > gzip_file

と入力する。

gzipでは,複数のファイルを圧縮して1つのファイルにまとめることはできない。ディレクトリごと圧縮して1ファイルにまとめたい場合は,tar でパッケージした後,gzipで圧縮する。その場合,拡張子は「.tar.gz」になる。tar.gzはLinuxのソース・パッケージに使われることが多い。
tar.gzファイルの展開は,

$ tar xzvf package.tar.gz

とする。この場合は,展開後も元のパッケージ・ファイルが残る。
逆にパッケージを作成したい場合は,

$ tar czvf package.tar.gz package-dir

とする。

コントローラの名前空間

冒頭で述べた通りコントローラは app/classes/controller 置かれ、 そして Controller_というプレフィックスを付けます。このプレフィックスはあなたの設定ファイル app/config/config.phpで、 (この設定がデフォルトでは存在しなかったとしても)設定されます。 あなたがコントローラに名前空間を使用したい場合、もしくはコントローラを別のフォルダへ移動させたい場合に、この設定を変更することができます。
では、前述のとおり名前空間 Controller へ expample コントローラを移動させましょう。 アプリケーションの config.php の中の controller_prefix を ‘Controller\\’ へ設定することで、この変更を FuelPHP へ知らせます。

namespace Controller;

class Example extends \Controller
{

public function action_index()
{
$data[‘css’] = Asset::css(array(‘reset.css’,’960.css’,’main.css’));
return Response::forge(View::forge(‘welcome/index’));
}
}
あなたのコントローラは名前空間内にいるため、グローバル名前空間からロードするために、”Controller” の前にバックスラッシュを付ける必要があることに 注意してください。

サブディレクトリ内のコントローラ

 fuel/app/classes/controller/subdir/test.php のように、サブディレクトリに コントローラを配置することもできます。この例では、コントローラはディレクトリ名を含む このようなクラス名にする必要があります: Controller_Subdir_Test

 

無制限の入れ子にされたサブディレクトリをサポートしますので、 fuel/app/classes/controller/subdir1/subdir2/subdir3/test.php はクラス名がController_Subdir1_Subdir2_Subdir3_Test になります。