カテゴリー
SugiBlog Webエンジニアのためのお役立ちTips

cURL(client for URL)

cURL(カール)は、HTTP・HTTPSやFTPなど様々なプロトコルを用いてデータを転送するライブラリとコマンドラインツールです。
最近のレンタルサーバーのPHPにはライブラリがデフォルトで組み込んであることもあります。

HTTPでデータを取得する

まず取得したいURLを設定

$url = "http://www.example.jp";

cURLを初期化し、ハンドルを取得します。

$ch = curl_init();

こちらにいきなりURLを入れてcurl_init($url)としても構いません。
ここではオプション設定を使用してURLを設定します。

curl_setopt($ch, CURLOPT_URL, $url);

メソッドの設定。GETを指定します。

curl_setopt($ch, CURLOPT_HTTPGET, true);

最後に取得したデータを文字列として取得するよう設定します。
続きを読む…»

691 views

コールバック関数でのthisの扱いに注意!

JavaScriptのクラスやオブジェクトリテラルでコーディングしていて、他の言語と同じ感覚でthisキーワードを使用しているとバグが発生する可能性があります。

他の言語だとthisというとクラスやオブジェクト自身を参照するのですが、JavaScriptだと少し違って、通常は同じようにクラスやオブジェクト自身を参照してくれるのですが、コールバック関数で呼び出された場合はwindowを参照するのです。
これを知らないと意図しない動作でバグとなり、エラーが発生しますのでご注意ください。

実際にサンプルコードを踏まえて説明します。
まずはコールバック関数を実行するメソッドを含んだオブジェクトを作成します。

const exam1 = {

    a: function(callback) {
        callback();
    }

}

次に、コールバック関数を引数に与えて、先ほどのオブジェクトのメソッドを実行するためのオブジェクトを作成します。

const exam2 = {

    b: function() {
        console.log("function b!");
    },

    c: function() {
        this.b();
    },

    d: function() {
        exam1.a(exam2.c);
    }

}

実行する順番としては次の通りです。
続きを読む…»

1,801 views

JavaScriptでクエリ文字列をスマートに生成する

URLパラメーターとしてクエリ文字列を渡す際に、クエリ文字列をスマートに生成することについて考察してみました。

昔ながらのクエリ文字列生成方法

let params = "";
params += "a=b";
params += "&c=d";
console.log(params);

出力結果

a=b&c=d

この方法だと条件式によってパラメーターを追加していくって場合にはアンパサンド(&)が問題になってくるのでちょっと不便ですね。
それを単純に解消しようと思うと以下のようなやり方でしょうか。

const DATA = [];
DATA.push("a=b");
DATA.push("c=d");

console.log(DATA.join("&"));

URLSearchParamsインターフェイス

URLSearchParamsインターフェイスを使うと、もっとスマートに生成できます。
続きを読む…»

3,521 views

Git for Windowsのアップデート

Git for Windowsのアップデート方法(ver 2.16以降)

公式サイトGit for Windowsからインストーラーをダウンロードしてくるか、以下のコマンドを実行すれば自動でダウンロードしてくれます。
インストール自体は同じGUI画面が表示されるようです。

$ git update-git-for-windows
6,373 views

PDOのタイムアウト設定

MySQL接続にPDOを使用している場合のタイムアウト設定についてです。

PDOにはPDO::ATTR_TIMEOUTというオプションを設定することが出来ます。
設定する値は数値で、単位は秒です。

設定方法としてはPDOのインスタンスを生成するときに設定するか、後から設定する方法の2通りあります。

インスタンス生成のときに設定する

$dbh = new PDO('mysql:host=localhost;dbname=test', 
    $user, 
    $pass, 
    array(PDO::ATTR_TIMEOUT => 30)
);

後から設定する

PDO::setAttribute(PDO::ATTR_TIMEOUT, 30);

続きを読む…»

5,491 views