_onichannn

【Javascript】関数が存在するかチェックする。

めも。

if(typeof funcname == 'function') {
    // 関数が存在する場合の処理
}

処理中のみならず、例えば表示されているページでjQueryが読み込まれているかどうか確認したい場合は下記コマンドをデバッグコンソールで実行すれば良い。

typeof $ == 'function'

// もしくは
typeof jQuery == 'function'

 

【PHP】「==」と「===」はどちらが高速であるか。

気になったので調べた。

結論としては「===」のほうが若干速い。

理由は下記の通り。

「==」演算子は比較対象が同等であるかを適切に評価するため、左辺、右辺を適宜型変換した上で値の突合を行っている。
一方「===」演算子は型変換を行わないで式の評価を行うため、「==」演算子よりも速度面で有利なのである。

 

【PHP】配列結合時のarray_merge()と「+」演算子の速度について。

array_mergeは連結後に添字を振り直すという処理が挟まるため、「+」演算子を用いたほうが高速である模様。
あと「+」演算子は関数呼び出しのオーバーヘッドがないから速い?んじゃないかと考えている。

 

【Excel】ユーザー定義関数を作成する。

メモ。

1, 「Alt + F11」を押してVBAエディタを開く。

2, 左側のプロジェクト一覧のところで右クリックし、そのメニューから「挿入(N)」→「標準モジュール(M)」を選択する。

1

3, あとは出てきたエディタに関数を記述してやれば、各シートから利用することが出来る。

2

 

【Excel】文字列連結を範囲指定で行う。

concatenate関数を範囲指定で行えないかと考えていたらよさげな関数が落ちていたのでメモ。

Function CONCATENATERANGE(ParamArray Elements())
    Dim c, ub As Long
    Dim t As String
    Dim rng, rngs As Range
    ub = UBound(Elements())
    t = ""
    For c = 0 To ub
        Set rngs = Elements(c)
        For Each rng In rngs
            If Not IsEmpty(rng.Value) Then
                t = t & rng.Value
            End If
        Next
    Next c
    CONCATENATERANGE = t
End Function

使用方法は下記の通り。

CONCATENATERANGE([範囲])

これはくっそ便利

 

【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」パラメーターを指定しないとメールが送信されない場合があるので念のためつけておいたほうが安全。

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

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

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