Archives by date

You are browsing the site archives by date.

【CentOS】shellコマンドの「2>&1」の意味。

めも。

linuxにおいて「1」は標準出力、「2」はエラー出力を表しており、下記例はコマンド実行結果から得られたエラー出力を、標準出力側に回して出力させていることになる。

command > /dev/null 2>&1

上記のコマンドを順番に解釈すると下記のような感じになる(んだと思う)

1, コマンドの実行結果を「/dev/null」に出力(※無になる)。

2, そしてその出力された結果をエラー出力「2」に渡す。(※「/dev/null」が渡されるので空を渡すのと同義)

3, 最後にその空となった「2」を「1」に追記するようなイメージで渡す。

4, 最終的に標準出力は空なのでなにも出力されないで終了。

うん。ややこしい。

 

【PHP】スクリプト上からメールコマンドを実行する際の注意。

めも。

まずは意図した通りにメールが送信されず処理がストップする例。

exec('mail -s "title" -r test@example.com test@example.com');

上記コマンドのみだと、この行に到達した時点でメール本文の入力待ち状態に移行してしまうため処理が止まってしまう。
これを回避するためには下記のようにして標準出力をメール本文に渡してやる必要がある。

exec('echo "" | mail -s "title" -r test@example.com test@example.com');

前半で空文字をechoしてやることで本文空のメールとして送信することが出来る。
また任意の文字列をメール本文に乗っけたい場合は、下記の通り好きな文字をechoしてやればよい。

exec('echo "テストメールです。" | mail -s "title" -r test@example.com test@example.com');

 

【CentOS】ターミナルからメールコマンドを入力する際の注意。

めも。

メールを送信しようとメールコマンドを入力するも一向に処理が終わらず送信されない状況に陥った。そんなにメール送信処理が激重なのかとおもったら、これは単に本文入力待ち状態だったというオチ。

発行したコマンドは下記の通り。

mail -s 'title' -r test@example.com test@example.com

※「-r」パラメーターを指定しないとメールが送信されない場合があるので念のためつけておいたほうが安全。

上記コマンドを叩いた直後から本文の入力待ちになるので、入力処理を終えないと次の処理に移ってくれないのである。

本文入力は「.(ドット)」を入力した後にエンターキーを押下すること入力確定となりメールが送信される。

意外とハマりそう?なので注意だね。

 

【MySQL】文字列を連結する。

めも。

例。

SELECT CONCAT_WS('-', col_1, col_2) as col_12 FROM table_name 

上記のSQLは「col_1」と「col_2」の値を「-」で連結した結果がかえってくる。
CONCAT_WS()関数は、第1引数に連結文字列を、それ以降の引数(任意)に連結対象の文字列(またはカラム)を指定する。
上記の例は、関数の出力結果に「col_12」というカラム名をつけて取得している。

 

【Excel】行と列を入れ替える方法。

■お手軽な方法

1, 行列を入れ替えたい範囲を指定する。

1

2, 「Ctrl + C」 でコピーした後、貼り付けたいセル上で右クリック。「形式を選択して貼り付け(S)」→「形式を選択して貼り付け(S)」を選択。

2

3, 出てきたダイアログの下部、「行列を入れ替える(E)」のチェックを入れ、「OK」をクリック。

3

4, すると下記のように入れ替えた結果を出力してくれる。

4

 

■おまけ(関数を使う方法)

1, 行列入れ替え後の表を貼り付けたい範囲を指定する。

5

2, その状態のまま、上の値入力欄に「=transpose(」と入力。
※閉じカッコ「)」は入力しないこと。

6

3, 範囲選択状態になっているのを確認した後、行列を入れ替えたい範囲をドラッグアンドドロップで指定する。

7

4, transpose関数の閉じカッコを入力する。

8

5, この状態で「Ctrl + Shift + Enter」を入力する。すると指定した範囲に行列入れ替え後のデータが貼り付けられる。
※選択範囲をオーバーしたデータは破棄されるので注意されたし。

9

 

【Javascript】selectorAPIで取得したinput要素を操作する。

メモ。

// 要素を取得して
var input = document.querySelector('*[name="user"]');
// 値を設定してみる
input.value = 'hogehoge';

// select要素も上記のようにvalue属性を設定してやればOK
var select = document.querySelector('select');
// 値を設定
select.value = 1234;

// submit要素を取得してデータを送信したい場合
var submit = document.querySelector('input[type="submit"]');
// 下記のようにsubmitする。
submit.form.submit();