paiza.IOを使ってみた


24のプログラミング言語をブラウザ上で実行できる「paiza.IO」　環境構築の手間ゼロ - ITmedia ニュース
http://www.itmedia.co.jp/news/articles/1411/18/news157.html

久々にピピンとくるサービスが出てきたので早速使ってみる。

# paiza.IOとは
* 使い捨ての仮想マシン上でプログラムを実行できるサービス
* ブラウザ上で提供されるエディタで書いてそのまま実行、すぐ結果が返るってくる
* 特にサインアップしなくても使える。シンプルイズザベストを素で行くサイト
* プログラム実行タイムアウトは2秒。超えると実行エラー
* メモリは512MBまで。
* 仮想マシンに書きこんだデータは実行後消去される（コンテナ仮想化かな？）
* いろんな言語を使える https://paiza.io/help
* Ctrl+Enterでコンパイル＋実行されるのでキーボードに手をおいたまま使える
* 外部ネットワークへのアクセスを許可している（ポイント！）
* スケジュール実行できる（ポイント！）

→ 割りとありがちなサービスかと思いきやこれは夢が広がる

# スペックを探ってみる

```bash
uname -a
Linux a8c6482f9e09 3.13.0-24-generic #46-Ubuntu SMP Thu Apr 10 19:11:08 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux
```
ubuntuらしい。

```bash
ps ax
PID TTY      STAT   TIME COMMAND
    1 ?        Ss     0:00 sh -c /sbin/ifconfig eth0 > ifconfig.txt; rm ifconfig.txt; /usr/bin/time -v -o exec_time.txt ./run_user runner2 bash Main.sh <exec_stdin.txt >exec_stdout.txt 2>exec_stderr.txt;echo $? > exec_exit_code.txt
   10 ?        S      0:00 /usr/bin/time -v -o exec_time.txt ./run_user runner2 bash Main.sh
   11 ?        S      0:00 bash Main.sh
   12 ?        R      0:00 ps ax
```
timeコマンドでタイムアウトを見てる。

```bash
ifconfig
eth0      Link encap:Ethernet  HWaddr XX:XX:XX:XX:XX:XX  
          inet addr:XXX.XXX.XXX.XXX  Bcast:0.0.0.0  Mask:255.255.0.0
          inet6 addr: XXXX::XXXX:XXXX:XXXX:XXX/XX Scope:Link
          UP BROADCAST  MTU:9001  Metric:1
          RX packets:1 errors:0 dropped:2 overruns:0 frame:0
          TX packets:1 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:78 (78.0 B)  TX bytes:90 (90.0 B)
```
割り振られるMACアドレスはランダム生成？
IPは実行するたびに最下位＋１

```bash
cat /proc/cpuinfo
processor	: 7
vendor_id	: GenuineIntel
cpu family	: 6
model		: 62
model name	: Intel(R) Xeon(R) CPU E5-2680 v2 @ 2.80GHz
stepping	: 4
microcode	: 0x415
cpu MHz		: 2793.340
cache size	: 25600 KB
physical id	: 0
siblings	: 8
core id		: 3
cpu cores	: 4
apicid		: 7
initial apicid	: 7
fpu		: yes
fpu_exception	: yes
cpuid level	: 13
wp		: yes
flags		: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx rdtscp lm constant_tsc rep_good nopl xtopology eagerfpu pni pclmulqdq ssse3 cx16 pcid sse4_1 sse4_2 x2apic popcnt tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm xsaveopt fsgsbase smep erms
bogomips	: 5586.68
clflush size	: 64
cache_alignment	: 64
address sizes	: 46 bits physical, 48 bits virtual
power management:
```
８コア

```bash
             total       used       free     shared    buffers     cached
Mem:         15039      14635        404       4576        612      11571
-/+ buffers/cache:       2450      12589
Swap:            0          0          0
```
15GB

```bash
cat /sys/class/dmi/id/bios_vendor
cat /sys/class/dmi/id/chassis_vendor
cat /sys/class/dmi/id/product_name
cat /sys/class/dmi/id/sys_vendor
Xen
Xen
HVM domU
Xen
```
Xenの仮想マシンのようす。
systemdはどうやってコンテナ・仮想化環境を判別しているのか - Qiita
http://qiita.com/ozaki-r/items/39bf059896eb13270209

```bash
uptime
 13:31:15 up 5 days,  5:44,  0 users,  load average: 0.52, 0.58, 0.51
```
しばらく動いているようだ

```bash
Filesystem                                              Size  Used Avail Use% Mounted on
rootfs                                                  7.4G  4.5G  2.9G  61% /
none                                                    7.4G  4.5G  2.9G  61% /
tmpfs                                                   7.4G     0  7.4G   0% /dev
shm                                                      64M     0   64M   0% /dev/shm
none                                                    7.4G  4.5G  2.9G  61% /.dockerinit
tmpfs                                                   1.5G  368K  1.5G   1% /etc/resolv.conf
none                                                    7.4G  4.5G  2.9G  61% /etc/hostname
none                                                    7.4G  4.5G  2.9G  61% /etc/hosts
/dev/disk/by-uuid/fe967360-f565-4497-8464-f340e473586c   99G   16G   79G  17% /workspace
tmpfs                                                   7.4G     0  7.4G   0% /proc/kcore
```
やっぱりdockerだった

```bash
cat /etc/resolv.conf
# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)
#     DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN
nameserver XXX.XXX.XXX.XXX
search ap-northeast-1.compute.internal
```
ネットワーク構成がきになる

```bash
none on / type aufs (rw,relatime,si=d600e3653b29f7a6)
proc on /proc type proc (rw,nosuid,nodev,noexec,relatime)
sysfs on /sys type sysfs (ro,relatime)
tmpfs on /dev type tmpfs (rw,nosuid,mode=755)
shm on /dev/shm type tmpfs (rw,nosuid,nodev,noexec,relatime,size=65536k)
devpts on /dev/pts type devpts (rw,nosuid,noexec,relatime,gid=5,mode=620,ptmxmode=666)
none on /.dockerinit type tmpfs (ro,relatime)
tmpfs on /etc/resolv.conf type tmpfs (ro,relatime,size=1540096k,mode=755)
none on /etc/hostname type tmpfs (ro,relatime)
none on /etc/hosts type tmpfs (ro,relatime)
/dev/disk/by-uuid/fe967360-f565-4497-8464-f340e473586c on /workspace type ext4 (rw,relatime,data=ordered)
proc on /proc/sys type proc (ro,nosuid,nodev,noexec,relatime)
proc on /proc/sysrq-trigger type proc (ro,nosuid,nodev,noexec,relatime)
proc on /proc/irq type proc (ro,nosuid,nodev,noexec,relatime)
proc on /proc/bus type proc (ro,nosuid,nodev,noexec,relatime)
tmpfs on /proc/kcore type tmpfs (rw,nosuid,mode=755)
```
カレントディレクトリのフォーマットはext4

```bash
cat /etc/lsb-release
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=14.04
DISTRIB_CODENAME=trusty
DISTRIB_DESCRIPTION="Ubuntu 14.04.1 LTS"
```
長期サポート (LTS)