忍者ブログ

STEP UP BLOG

Home > ブログ > 記事一覧

[PR]

×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

manで調べる

長くエンジニアをやっていても知らないコマンドは多く、
今でもいろいろなコマンドの使い方を調べたりします。
そこでどうするか。
ググるよりもまずはmanですよね。
man最強。
だいたいmanで調べればわかります。
Googleで「何かのコマンド オプション」で検索しても主なオプションは出てきますが、
manには基本的にすべてのオプションが載っているので、
Googleから漏れがちでも意外と有用なオプションも見つけることができます。
このmanにはセクションという概念があって、セクションを指定するとそれに対応する情報が表示されます。
セクションは、
$ man -S 1 ls

のように指定します。
セクション番号は以下の通り。

1 ユーザー・コマンド
2 システム・コール
3 関数やライブラリ・ルーチン
4 特殊ファイル,デバイス・ドライバ,ハードウエア
5 設定ファイルとファイル形式
6 ゲームとデモ
7 その他(文字セット,ファイル・システム・タイプなど)
8 システム管理用コマンド

どのセクションの情報を持っているかは-awオプションでわかります。
$ man -aw echo
/usr/share/man/man1/echo.1
/usr/share/man/man3/echo.3x


という感じで普段使っているコマンドもmanで調べてみて知らなかったオプションを発見してみてはいかがでしょうか。
PR

関数呼び出し時のインラインコメント

職場の勉強会のために「リーダブルコード」を読みました。
新人エンジニアが読むべき◯◯冊に必ず入っている定番書です。
エンジニアになって幾星霜、やっと読みましたよ!
「読みやすいコード」についての指南書となっていて
だいたい納得できることです。

読みやすいコードについて頷くしかないことの連続なんですが、
その中でも初めて出会った書き方があって、
この歳になっても出会いにワクワクできることに感謝しつつ紹介するのが以下のコメントの書き方です。
someFunction($id, /* from_admin = */ true);

関数の呼び出しの第2引数の前にインラインコメントが入っています。
someFunction($id, true);

コメントが入っていないと、このtrueが何を表しているのかわかりません。
しかし、
someFunction($id, /* from_admin = */ true);

だと、from_admin = true なのだということが一目瞭然です。
わかりやすい〜〜〜
使ってこ!!

anyenvのススメ

いろいろな案件、いろいろな言語で開発していくとそれぞれの言語のバージョン管理に苦しまざるをえないはずです。
プログラミング言語のバージョン管理は、PHPならphpenv、Rubyならrbenv、Pythonならpyenv、Nodeならndenv、
などなど、LL系ならばほとんどの言語において**envの名前で揃っています。
しかしこれらの**envを使っていても、だんだんと**envが多くなってきてため息つきたくなるところ。
そこで便利なのが、**envを管理するanyenvというライブラリです。

https://github.com/riywo/anyenv

GitHubページにも書かれている通り、"all in one for **env"、明快ですね。
インストールはgit cloneしてPATHを通すのみ。簡単ですね。

まずはじめにするのは**env系のインストールです。
$ anyenv install ndenv
$ anyenv install rbenv

これでndenvとrbenvがインストールされます。
確認すると、
$ anyenv versions
ndenv:
* system (set by /Users/takahashi/.anyenv/envs/ndenv/version)
rbenv:
* system (set by /Users/takahashi/.anyenv/envs/rbenv/version)

と表示されます。
ここから、指定のバージョンのNode.jsをインストールしていきましょう。
$ ndenv install 5.12.0
$ anyenv versions
ndenv:
* system (set by /Users/takahashi/.anyenv/envs/ndenv/version)
  5.12.0
rbenv:
* system (set by /Users/takahashi/.anyenv/envs/rbenv/version)
$ node -v
v0.10.16

となります。
この時点ではまだインストールした5.12.0は使えません。
次に、
$ ndenv global 5.12.0
$ anyenv versions
ndenv:
  system
* 5.12.0 (set by /Users/takahashi/.anyenv/envs/ndenv/version)
rbenv:
* system (set by /Users/takahashi/.anyenv/envs/rbenv/version)
$ node -v
v5.12.0

これでインストールした5.12.0のNode.jsが使えるようになりました。
という感じで、他の言語についても同じように使えるので、言語バージョン管理の必要性を感じるようになってきたらanyenvをオススメします。
以上です!

Firefoxのevent

最近デフォルトのブラウザをChromeからFirefoxに変えました。
なんだかChromeがやけに重くなるときがあって、試しにFirefoxに変えてみたら(こちらも以前は重かった印象がある)、
なんということでしょう、爆速ではないですか。
爆速というと言い過ぎですが、とにかくストレスが無い表示速度。
ということで最近はFirefoxでネットサーフィン(90年代)しているのですが、たまにFirefoxでしか味わえないエラーに出会うこともあります。
エラー出合い系ブラウザといえばIEですが、近年はIEも賢くなってきて相対的にFirefoxの仲間外れ度が増してきたようですが。。
そんなFirefoxでの、そこは空気読んでくれないかなという仕様のひとつがeventです。
$("#some_button").click(function() {
    event.preventDefault();
    console.log("clicked");
});

Firefoxで実行すると"event is not defined"となります。
$("#some_button").click(function(evt) {
    evt.preventDefault();
    console.log("clicked");
});

こちらならFirefoxでも正常に動くのですが。
ただ、
$("#some_button").click(function(evt) {
    var e = evt.originalEvent;
    e.preventDefault();
    console.log("clicked");
});

こちらとの違いがよくわかってません。。。
Googleで調べると、結構以前からFirefoxはこの仕様の模様(根本的なところはGeckoだからなのか?)
ということでjavascriptでeventを取り扱うときは注意ですね><

Twilioで電話をかける

今回取り上げるのはTwilioというサービス。

http://twilio.kddi-web.com/

コードを書いてSMSを送信したり電話を発信したりできるWebサービスです。
サイトのキャッチコピーそのままですけど、たった数行のコードで電話できたり、かなり感動ものです。
料金は以下の通り。

http://twilio.kddi-web.com/price/

今回はPHPでコードを書いて、自分の携帯電話宛に発信してみようと思います。

https://jp.twilio.com/docs/libraries

ドキュメントも充実しているので悩むこともありません。

https://jp.twilio.com/docs/php/install

PHPから使えるTwilioライブラリーはComposerでサクッとインストールできます。
Twilioを操作するにはまず認証です。
Twilioに登録するともらえるAccountSIDとAuthTokenで認証します。

$client = new Services_Twilio(
    'xxxxxxxx',
    'yyyyyyyy'
);

https://jp.twilio.com/docs/quickstart/php/rest/call-request

$call = $client->account->calls->create(
    '+81xxxxxxxxxx',
    '+81yyyyyyyyyy',
    'http://www.zzzzz'
);

電話をかけるにはこれだけ。簡単!!!
引数の1つ目が発信元電話番号、この電話番号はアカウント画面で買ったりすることができます。
2つ目が発信先電話番号、こちらに電話をかけます。
3つ目が電話の内容です。これはTwimlというフォーマットで記述される必要があります。

https://jp.twilio.com/docs/api/twiml

Twimlで記述されたファイルをTwilioからアクセスできる場所に置きます。
そうするとTwilioがそのファイルを読んで、テキストを読み上げたりしてくれる寸法です。
しかし開発していると必ずしも外からアクセスできる場所にTwimlファイルを置けるとは限りません
そんなときに便利なのがTwimletsというTwilioのサービス。

https://www.twilio.com/labs/twimlets

この中のEchoというサービスを使うと任意のTwimlを返すURLを作ってくれます。
単純にパラメータで渡されたものを元にTwimlを返すだけなんですが。

https://www.twilio.com/labs/twimlets/echo

ここで得られたURLを3つ目の引数として渡せば、その通りにテキストを読み上げたりしてくれます。
実験的なサービスなので本番では使えませんが、クローズド環境での開発段階では重宝しますね。
こんな感じで簡単に電話できます。
超簡単です。
エラーもかなり細かく取得できます。

https://jp.twilio.com/docs/api/errors/reference

これなら夜中にサービスダウンしてアラートメールを飛ばしてもなかなか起きない担当者にがんがん電話を鳴らすことが可能なので一考してみてはどうでしょうか(地獄)

PAGE TOP