ページ

2014年10月11日土曜日

Dockerをさわってみる 1 - インストール -

何かと目にする「Docker」をさわってみました。

Linux上でしか動かないという事なので、CentOS 6.5で実行してみる。
ちなみに、
コンテナ型仮想化とは・・・
ゲスト OS をホスト OS のカーネル内で分離する技術をいう、と思う。 ハイパーバイザ型仮想化に比べると一般に仮想化に必要なオーバーヘッドが少ないのがメリットとされている。 ただし、ホスト OS とゲスト OS がカーネルを共有するため、幾ら内部的に分離されているとはいえカーネルモジュールを使ったりするような一部の機能とは相性がよろしくない。
らしい。

早速CentOSにDockerをインストール。

DockerはEPELからインストールするらしい。

[root@localhost ~]# yum -y install http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
Loaded plugins: fastestmirror, refresh-packagekit, security
Loading mirror speeds from cached hostfile
epel/metalink                                             | 5.7 kB     00:00  
 * base: mirror.fairway.ne.jp
 * epel: ftp.yzu.edu.tw
 * extras: mirror.fairway.ne.jp
 * rpmfusion-free-updates: mirrors.ustc.edu.cn
 * rpmfusion-nonfree-updates: mirrors.ustc.edu.cn
 * updates: ftp.nara.wide.ad.jp
base                                                      | 3.7 kB     00:00  
epel                                                      | 4.4 kB     00:00  
epel/primary_db                                           | 6.3 MB     00:11  
extras                                                    | 3.3 kB     00:00  
rpmfusion-free-updates                                    | 2.7 kB     00:00  
rpmfusion-nonfree-updates                                 | 2.2 kB     00:00  
updates                                                   | 3.4 kB     00:00  
updates/primary_db                                        | 5.4 MB     00:05  
Setting up Install Process
epel-release-6-8.noarch.rpm                               |  14 kB     00:00  
Examining /var/tmp/yum-root-tT_1o2/epel-release-6-8.noarch.rpm: epel-release-6-8.noarch
/var/tmp/yum-root-tT_1o2/epel-release-6-8.noarch.rpm: does not update installed package.
Error: Nothing to do
[root@localhost ~]# yum -y install docker-io
Loaded plugins: fastestmirror, refresh-packagekit, security
Loading mirror speeds from cached hostfile
 * base: mirror.fairway.ne.jp
 * epel: ftp.yzu.edu.tw
 * extras: mirror.fairway.ne.jp
 * rpmfusion-free-updates: mirrors.ustc.edu.cn
 * rpmfusion-nonfree-updates: mirrors.ustc.edu.cn
 * updates: ftp.nara.wide.ad.jp
Setting up Install Process
Resolving Dependencies
--> Running transaction check
---> Package docker-io.x86_64 0:1.1.2-1.el6 will be installed
--> Processing Dependency: lxc for package: docker-io-1.1.2-1.el6.x86_64
--> Processing Dependency: libcgroup for package: docker-io-1.1.2-1.el6.x86_64
--> Running transaction check
---> Package libcgroup.x86_64 0:0.40.rc1-6.el6_5.1 will be installed
---> Package lxc.x86_64 0:1.0.5-5.el6 will be installed
--> Processing Dependency: lua-lxc(x86-64) = 1.0.5-5.el6 for package: lxc-1.0.5-5.el6.x86_64
--> Processing Dependency: lua-alt-getopt for package: lxc-1.0.5-5.el6.x86_64
--> Processing Dependency: liblxc.so.1()(64bit) for package: lxc-1.0.5-5.el6.x86_64
--> Running transaction check
---> Package lua-alt-getopt.noarch 0:0.7.0-1.el6 will be installed
---> Package lua-lxc.x86_64 0:1.0.5-5.el6 will be installed
--> Processing Dependency: lua-filesystem for package: lua-lxc-1.0.5-5.el6.x86_64
---> Package lxc-libs.x86_64 0:1.0.5-5.el6 will be installed
--> Running transaction check
---> Package lua-filesystem.x86_64 0:1.4.2-1.el6 will be installed
--> Finished Dependency Resolution

Dependencies Resolved

=================================================================================
 Package              Arch         Version                   Repository     Size
=================================================================================
Installing:
 docker-io            x86_64       1.1.2-1.el6               epel          4.5 M
Installing for dependencies:
 libcgroup            x86_64       0.40.rc1-6.el6_5.1        updates       126 k
 lua-alt-getopt       noarch       0.7.0-1.el6               epel          6.9 k
 lua-filesystem       x86_64       1.4.2-1.el6               epel           24 k
 lua-lxc              x86_64       1.0.5-5.el6               epel           15 k
 lxc                  x86_64       1.0.5-5.el6               epel          119 k
 lxc-libs             x86_64       1.0.5-5.el6               epel          244 k

Transaction Summary
=================================================================================
Install       7 Package(s)

Total download size: 5.1 M
Installed size: 25 M
Downloading Packages:
(1/7): docker-io-1.1.2-1.el6.x86_64.rpm                   | 4.5 MB     00:22  
(2/7): libcgroup-0.40.rc1-6.el6_5.1.x86_64.rpm            | 126 kB     00:00  
(3/7): lua-alt-getopt-0.7.0-1.el6.noarch.rpm              | 6.9 kB     00:00  
(4/7): lua-filesystem-1.4.2-1.el6.x86_64.rpm              |  24 kB     00:00  
(5/7): lua-lxc-1.0.5-5.el6.x86_64.rpm                     |  15 kB     00:00  
(6/7): lxc-1.0.5-5.el6.x86_64.rpm                         | 119 kB     00:00  
(7/7): lxc-libs-1.0.5-5.el6.x86_64.rpm                    | 244 kB     00:01  
---------------------------------------------------------------------------------
Total                                            181 kB/s | 5.1 MB     00:28  
Running rpm_check_debug
Running Transaction Test
Transaction Test Succeeded
Running Transaction
  Installing : lxc-libs-1.0.5-5.el6.x86_64                                   1/7
  Installing : lua-filesystem-1.4.2-1.el6.x86_64                             2/7
  Installing : lua-lxc-1.0.5-5.el6.x86_64                                    3/7
  Installing : libcgroup-0.40.rc1-6.el6_5.1.x86_64                           4/7
  Installing : lua-alt-getopt-0.7.0-1.el6.noarch                             5/7
  Installing : lxc-1.0.5-5.el6.x86_64                                        6/7
  Installing : docker-io-1.1.2-1.el6.x86_64                                  7/7
  Verifying  : docker-io-1.1.2-1.el6.x86_64                                  1/7
  Verifying  : lua-lxc-1.0.5-5.el6.x86_64                                    2/7
  Verifying  : lxc-1.0.5-5.el6.x86_64                                        3/7
  Verifying  : lua-alt-getopt-0.7.0-1.el6.noarch                             4/7
  Verifying  : lxc-libs-1.0.5-5.el6.x86_64                                   5/7
  Verifying  : libcgroup-0.40.rc1-6.el6_5.1.x86_64                           6/7
  Verifying  : lua-filesystem-1.4.2-1.el6.x86_64                             7/7

Installed:
  docker-io.x86_64 0:1.1.2-1.el6                                              

Dependency Installed:
  libcgroup.x86_64 0:0.40.rc1-6.el6_5.1    lua-alt-getopt.noarch 0:0.7.0-1.el6
  lua-filesystem.x86_64 0:1.4.2-1.el6      lua-lxc.x86_64 0:1.0.5-5.el6        
  lxc.x86_64 0:1.0.5-5.el6                 lxc-libs.x86_64 0:1.0.5-5.el6      

Complete!
[root@localhost ~]# service docker start
Starting cgconfig service:                                 [  OK  ]
Starting docker:                                   [  OK  ]
[root@localhost ~]# chkconfig docker on
[root@localhost ~]#

無事インストール完了!!

基本的な使い方

1. Docker index(共有リポジトリみたいなもん)からimageをpull
2. pullしたimageを実行(run)
3. imageをカスタマイズ
4. カスタマイズしたimageをcommit(ローカル)
5. カスタマイズしたimageをDocker indexにpush(共有リポジトリ)
6. 他PCからDocker indexにpushしたカスタマイズimageをpullして使用する事ができる

これだけみるとGitに似てる・・・

まずは、Docker index内のimageを検索してみる。
例) Ubuntuを検索
 > docker search ubuntu
























たくさんhit^^
次にUbuntuをローカルにpullしてみる。
ちょっと時間がかかりましたが、pullが完了しました。
























ちゃんとimageがpullできたか確認
 > docker images

imageの詳細をみるには
 > docker inspect [TAG or ID]

不要なimageを削除するには
 > docker rmi [TAG or ID]

pullしたimageを使ってコンテナの作成

コンテナを作成し、そのままコマンドを実行する。
例)
 > docker run ubuntu echo “hello world”

実行してみると↓こんなエラーがっ!!
[root@localhost ~]# docker run ubuntu echo "Hello"
2014/10/10 19:17:52 Error response from daemon: Cannot start container 1a763badc2ca55ab76c9abf3a3f4e0413253a6acd81cdc79170bd5929932506d: unable to remount sys readonly: unable to mount sys as readonly max retries reached

なんじゃこら〜!!!!
マウントできないとのお叱りをうけましたorz

↓以下サイトを参考にして/etc/sysconfig/dockerを修正

[root@localhost ~]# diff /etc/sysconfig/docker /etc/sysconfig/docker.org
7c7
< other_args="--exec-driver=lxc --selinux-enabled"
---
> other_args=""

いざ、実行!!
[root@localhost ~]# docker run ubuntu echo "Hello"
lxc-start: Device or resource busy - failed to set memory.use_hierarchy to 1; continuing
Hello

ん〜、実行できたがなんかfailedが出ているorz
実行したコンテナ一覧を見てみると・・・
[root@localhost ~]# docker ps -a
CONTAINER ID        IMAGE               COMMAND              CREATED             STATUS                      PORTS               NAMES
eedab5d5ff07        ubuntu:14.04        echo Hello           17 seconds ago      Exited (0) 16 seconds ago                       high_colden         

Exited(0)で終了している。
とりあえず、コンテナを削除し、リセット
[root@localhost ~]# docker rm eedab5d5ff07
eedab5d5ff07
[root@localhost ~]# docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES

もう一度やってみる。
同じでしたorz 解決はまた今度^^;



2014年10月10日金曜日

AWSにお世話になる 6 - PHPで遊ぶ -

PHPでWEBページのパースとJSON出力を行う

※その前に・・・TeraTermでのEC2接続
1. TeraTerm起動し、IPアドレスを入力















2. セキュリティ警告が出るが、IPが変わるので無視



















3. ユーザ名に「ec2-user」を秘密鍵 RSA/DSA/~を使うにチェックし、秘密鍵に
     作成したXXX.pemファイルを指定























これで接続できるはず^^

apache, php, mysqlのインストール

※環境・・・Amazon Linux
以下コマンドを実行。
  sudo yum -y install apache php mysql

また、phpでよく使われるらしいmbstringも入れる。
  sudo yum -y install php-mbstring

起動、設定
  ・起動
  sudo service start httpd

  ・Linux起動時にサービスがスタートするように設定
  sudo chkconfig httpd on

テスト用のphpページ作成
<?php
  phpinfo();
?>

↓ブラウザでアクセス



















PHPでのJSON出力

びっくりするぐらい簡単にできた^^;
以下参考URL
http://webdelog.info/blog/2012/01/12/php-output-json.html

PHPでのWEBページ読み込み

こちらもすんなりいけそう。。
以下参考URL
http://webings.net/php/filegetcontents/

が、

文字コードがちゃんとできてないごたorz
webページを読み込む file_get_contentsで取得したコンテンツを
mb_convert_encodingで文字コード変換できるらしい。

以下参考URL
http://blogs.yahoo.co.jp/nob_ll/45477291.html
http://jp2.php.net/manual/ja/mbstring.supported-encodings.php

2014年10月7日火曜日

Cent OSでOpenGL 9 - マテリアル -

材質の設定

またまたいつものURL
http://seesaawiki.jp/w/mikk_ni3_92/d/%BA%E0%BC%C1%A4%CE%C0%DF%C4%EA

どうやら材質特性によって反射の仕方が変わるらしい。
「glMaterial()関数」を使用。

例)金属のような質感





















↓ソースコード
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

GLfloat gold_amb[] = { 0.24725, 0.1995, 0.0745, 1.0 };
        GLfloat gold_diff[] = { 0.75164, 0.60648 , 0.22648, 1.0 };
        GLfloat gold_spe[] = { 0.628281, 0.555802,0.366065,1.0 };
        GLfloat gold_shin[] = { 51.2 };

        glMaterialfv(GL_FRONT_AND_BACK, GL_AMBIENT, gold_amb);
        glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, gold_diff);
        glMaterialfv(GL_FRONT_AND_BACK, GL_SPECULAR, gold_spe);
        glMaterialfv(GL_FRONT_AND_BACK, GL_SHININESS, gold_shin);

glBegin(GL_POLYGON);


↓材質のパラメータ
パラメータ名内容初期値
GL_AMBIENT環境光(0.2, 0.2, 0.2, 1)
GL_DIFFUSE拡散光GL_LIGHT=(0.8, 0.8, 0.8, 1)
GL_SPECULAR鏡面光(0,0,0,1)
GL_EMISSION放射輝度(0,0,0,1)
GL_SHININESS鏡面光の指数0。0~128までできる
GL_AMBIENT_AND_DIFFUSE「環境光」、「拡散光」を同時に指定する
GL_COLOR_INDEXES「環境光」、「拡散光」、「鏡面光」のカラー座標

※ GL_FRONT_AND_BACKは面の裏、表両方に適用させる時に指定する。
    GL_FROMT だと表面のみ、GL_BACKだと裏面のみに材質を設定できる。


2014年10月4日土曜日

iOSアプリ開発してみる 3 - NSunknownKeyException -

実行中に’NSunknownKeyException’ が出る場合

↓こんなやつ














なかなか原因が分からなかったのですが、、、
色々調べて↓サイトを発見
http://blog.daisukeyamashita.com/post/956.html

コントロールをOutletとして紐付けた後で削除したりした場合
発生するらしい><;

・実験
1. ラベルを紐付ける
















2. 紐付けたものを削除
3. いざ実行!!

はい、出ました><;

解決策

削除したラベルを選択し、'show the connections inspector’を開く

Referect outletに削除したものがあるので削除する。
以上!!

無事に実行できました^^






iOSアプリ開発してみる 2 - Size Class -

Size Classを学習

前回のダメな例を修正してみる。

いい感じに配置したいものを選択、右下の「Align」を設定




























Holizontal Center 〜とVertical Center〜にチェックを入れ、add 2 Constraintsをタップ
これで画面真ん中に表示されるはず。

























↓黄色く数値が出ている、これは先ほど設定した場所とずれてますよ〜という事らしい。















Resolve Auto Layout IssuseからUpdate Frameを選択














↓なんかおかしな事になってるが、これは幅と高さを設定していないから














Pinから幅と高さを設定してやり、Update Frameする














↓ん〜いい感じ^^














シュミレータを起動してみる。ちなみにショートカットキーは
Command + R
























ちゃんと真ん中に表示されている。
ちなみにipadでも・・・
























って何か上ぎみ?ん〜また次回以降に調べてみよう^^;


iOSアプリ開発してみる 1 - Xcode6.0 環境設定 -

楽しそうな宿題を出されたので、やってみる。

iOS開発、、以前ちょこっとやって途中で止めてしまっていたので、
今回一からチャレンジ!!

開発環境
 - MBA
 - Xcode Version 6.0.1 (6A317)

試しにXcodeを開いてみたら、以前とかなり変わっている><;














ええと、左側がNavigator、真ん中がEditor、左側がUtility、下がDebuggerと、ふむふむ。

今後使うであろうショートカットキーまとめ。
 ・Navigator
       Command + 0                     ・・・Navigatorの表示/非表示
       Command + 1                     ・・・Project Navigator
       Command + 2                     ・・・Symbol Navigator
       Command + 3                     ・・・Find Navigator
       Command + 4                     ・・・Issue Navigator
       Command + 5                     ・・・Test Navigator
       Command + 6                     ・・・Debug Navigator
       Command + 7                     ・・・Breakpoint Navigator
       Command + 8                     ・・・Report Navigator

 ・iOSシュミレーター
























       Command + ←                     ・・・左側へ回転
       Command + →                     ・・・右側へ回転
       Command + Shift + H          ・・・ホーム画面


実際にアプリを作成してみる

Xcode起動
[Create a new Xcode projectを]選択















一番シンプルな[Single View Application]を選択















プロジェクト名や識別名等を入力、言語は「Objective-C」














保存場所を選択し、「Create」

色々レイアウトしてみる

NavigatorからXXX.storyboardを選択
↓Storyboardの編集画面が表示される。














右下にあるView選択からButtonやらLabelやらドラッグして〜なんて簡単に
考えていたら、どうやらXcode 6からSize Classというものが導入されていた模様・・・

Size Class 参考サイト
http://d.hatena.ne.jp/shu223/20141002/1412209257

色んなサイズのデバイスに対応する為のものらしい。
試しに、Size Classなんてシラネ〜ってな感じで配置してみる。

背景が青色のViewを左下に配置















Assistantエディッターを開く














プレビューを開く














↓思いっきりずれてる><;














ちなみに、他のデバイスのプレビューも左下の「+」から追加可能
↓ipadのプレビューを追加した














これはひどい><; まじめにSize Classを学習しなければっ
次はSize Classのお勉強。

2014年10月2日木曜日

ATOK for iOS購入

ベンダー製のキーボードアプリ購入

本題とは関係無いのですが、このブログも何だかんだで1年続いております。
自分でもビックリ^^;
この先も続く事を願います・・・

先日購入したiphone6ですが、iOS8になってからベンダー製のキーボードアプリが
使える様になりました。ベンダー製の中でも色々な評価があるATOK for iOSを購入。

JUSTSYSTEMS CORPORATION
JUSTSYSTEMS CORPORATION
ATOK for iOS
★★☆☆☆
1728件の評価
App Store


現在の評価は辛口なものが多いです^^;
実際に使ってみました。
























iphone標準のアプリ(メモやカレンダー等)は普通に使えました。
が、
他のアプリは対応していないアプリが多い様に感じます。

↓QuickMemo+で開いた所、右端が見切れている><
























今後に期待!!