VOYAGE GROUP エンジニアブログ

voyagegroup_techのブログ
VOYAGE GROUPエンジニアブログです。

「iPad (Wi-Fi) + Pocket WiFi + Apple Wireless Keyboard + ISSH」でWebアプリケーション開発環境を実現する。

こんにちは。 ECナビに新しく創設されました株 式会社genesixで プログラマをしています上杉 (@unlearned)です。

日本でもiPadの発売日が決定!! 早速、私もiPad(Wi-Fi)を予約注文しました。 やがて訪れる便利な生活を妄想して、うずうずしているところです。

ところで、先日アメリカ出張から帰ってきた同僚が、iPad を手に入れてきました。ECナビには、既に7台iPadがあります。

プログラマーであればいつでもどこでもアプリ開発をしていたいですよね。 わかります。

そこで表題にある 「iPad (Wi-Fi) + Pocket WiFi + Appleワイヤレスキーボード + iSSH」 を用いたWebアプリケーション開発環境をご提案いたします。

ちなみにiPad (3GS)購入の方はPocket WiFiは必要ないです。

まずはiPadと Apple Wireless Keyboard(US)をBluetooth経由で接続します。

1. Wireless Keyboardの電源を入れてください。

2. iPadの [設定] [一般] から [Bluetooth] を選択

3. Bluetoothを ”オン” にする

4. デバイスに ”Apple Wireless Keyboard” と表示される

5. 表示された ”Apple Wireless Keyboard” をクリックしてしばらく待つ

6. "Apple Wireless Keyboardでパスキー○○××を入力し、retunまたはenterキーを押してください" (○○○×××は6桁の数字)と表示されますので、そのようにします。

7. ”接続済み” の表示が出る

接続が完了すると、テキストの入力時にソフトフェアキーボードが表示されなくなります。

さて、これでキーボードの接続は完了。

次に必要なのはサーバ接続環境。 ここではiPad版のiSSHを利用します。 お値段は$10と、ちょっと値は張りますが躊躇無く購入します。

では立ち上げてみましょう。

ジャーン!!
写真1

これでバリバリ開発するぜー!!

しかし、iSSHではキーボードからのalt、Ctrl、Esc、tabが効かない!!!

orz . . . .

他のアプリではちゃんとalt、Ctrl、Esc、tabは使えます。 iSSH の作者の方、ご対応よろしくお願いします。

ちなみにこのシステムの優位性は重量の軽さ。

MacBook Air 1360kg (Appleの仕様(*1)より)

・Apple Wireless Keyboard(US) + 単三乾電池x2 0.324kg(実測値)
・iPad(Wi-Fiモデル) 0.680kg(Appleの仕様(*2)より)
合計1.004kg

「MacBook Air」と比較して 「iPad(Wi-Fiモデル) + Apple Wireless Keybord(US)」のほうが300[g]程度軽い!!
写真2

ECナビでは「スマートフォン研究会」という社内サークルもあり、 有志でブログを立ち上げています。そちらもよろしく。

スマホ研究会
http://blog.smaho.jp/

(*1) http://www.apple.com/jp/macbookair/specs.html
(*2) http://www.apple.com/jp/ipad/specs/

RATSでPHPの利用すべきでない関数をチェック

こんにちは, 株式会社ECナビ システム本部 ECナビラボグループの春山(@haruyama)と申します.

私は, 主にセキュリティと検索をテーマに仕事をしています. 今回はセキュリティについてです.

先日, 他の言語については十分経験があるがPHPについてはあまり経験のない社員から,

「PHP (5.2) で使ってはいけない関数の一覧ってどこかにありませんか」と聞かれました.

PHPのセキュリティについては, PHP: セキュリティ - ManualPHP と Web アプリケーションのセキュリティについてのメモなどに資料があります.

また, PHP: PHP 5.3.x で推奨されない機能 - Manual に「推奨されない関数」という項目があります.

PHPのsplit() が推奨されないのは, split() がereg() などの POSIX 正規表現関数に属していて,

そして POSIX 正規表現関数 がバイナリセーフでなく速度も低速であるからです.

この知識はPHPの経験の浅い人が知ることは難しいでしょう.

そこでPHPのコードを静的に解析して問題のある関数の利用を抽出しようと考えました.

PHPの静的解析についてはあまり耳にしませんが, いくつかのツールがあります.

私は前職で, PHPLintという静的解析ツールに手を入れて, 問題のある関数への警告を出していました.

しかし, PHPLintは作者の独自のModula-2風の言語で書かれており, 改造しての利用は手軽ではありません.

そこで, RATS - Rough Auditing Tool for Securityを利用することにしました.

RATSは, c, c++, perl, php, python, rubyに対応した静的解析ツールです.

データベースファイル(xml)を自分で定義することで拡張することができます.

RATSはソースとWin32のバイナリが配布されています.

またDebianやUbuntuにはパッケージもあります.

ソースからのインストールは「./configure; make; make install」で可能です.

Win32のバイナリには, The Expat XML Parserのdllファイルをパスの通った場所に置く必要があります.

RATSのデフォルトのデータベースファイルには, PHPのsplit() についてのルールはありません.

データベースファイル(rats-php-split.xml)を次のように作成します (ファイルの文字エンコーディングやシェルのロケールがUTF-8の場合, 問題なく日本語文字が出力されました).

<VulnDB lang="php">
<Vulnerability>
<Name>split</Name>

<Info>
<Severity>High</Severity>
<Description>
split()はバイナリセーフではありません.
また, preg_split()よりも低速です.
preg_split()かexplode()を使用しましょう.
</Description>
</Info>

</Vulnerability>

</VulnDB>

次のsplit() を利用しているファイル(split_test.php)にRATSを適用すると, データベースファイルで指定した警告が出ます.

<?php
list($user, $pass, $uid, $gid, $extra) =
split(":", $passwd_line, 5);

% .../rats --db rats-php-split.xml split_test.php   
Entries in php database: 1
Analyzing split_test.php
split_test.php:3: High: split
split()はバイナリセーフではありません.
また, preg_split()よりも低速です.
preg_split()かexplode()を使用しましょう.

Total lines analyzed: 6
Total time 0.000074 seconds
81081 lines per second

警告を行なう関数の追加は, Vulnerability要素の追加で行なえます. rats-php-deprecated.xmlが私が作成したPHP: PHP 5.3.x で推奨されない機能 - Manualで挙げられている関数に対するデータベースファイルです.

ECナビでも, PHPを新たに始める人のコードや古いコードのチェックに利用していこうと考えています.

以上, RATSでPHPの利用すべきでない関数をチェックでした.

ECナビ エンジニアブログ開始します。

皆様はじめまして。システム本部の吉村と申します。
この度 ECナビグループ エンジニア陣でBlogを始めることになりました。

このblogで扱う内容は以下となります。
* システム開発、運用時のノウハウ
* 技術セミナーの告知及び報告
* エンジニアが面白いと感じたこと

また、Twitterでも ecnavi_tech というアカウントでつぶやきますので、よろしければフォローしてください。

すでにプロフェッショナルな技術者の方だけではなく、
これから技術を学びたいと思っている方にも楽しんでいただけるような情報をお伝えしていきます。
このblogをきっかけにECナビグループを少しでも知っていただければ幸いです。
気長にお付き合いください。
記事検索
QRコード
QRコード