ページ

2013年10月30日水曜日

コストコ購入リスト 1

コストコで買い物した商品リスト

・ガーリックウィンナー

 若干ぱりっとしてない感じ。とにかくでかい。

























・ベーグル (プレーンとシナモン)

    シナモンはあんまし美味しくなかったorz

 

・ドライマンゴー

     普通に美味しい♪

























・ツールキット

    色々入ってる割に安かった(2000円くらい)ので購入


パン屋探索 1 - 石窯パン工房クリーブラッツ -

石窯パン工房クリーブラッツ若草店




所在地     : 福岡県大野城市若草3-5-13
TEL          : 092-595-7711
営業時間 : 7:00 〜 19:00

今までのパン屋さんの中で一番かも・・・
近くにコープがあったので、帰りに買い物。

大きな地図で見る

・カレーパン

 具がごろごろしていて、さっくさくでした。

・朝食パン的な

 朝食でいただきました。。。

・メロンパン?的な

 外側さくさくでおいしかったす。


2014/07追記
変わり種を購入。何にしてもパンの生地がうまい。
飲み物(コーヒー、その他)も無料で飲めるし、BGMも良い。








2013年10月22日火曜日

WebRTC調査 3


WebRTCのネイティブ API調査



1. WebRTC概要

   WebRTCは、簡単なJavaScript APIを介して、リアルタイムコミュニケーション(RTC)機能を備えたWebブラウザを有効に自由、開いているプロジェクトです。
   WebRTCコンポーネントは最高のこの目的を果たすために最適化されています。

   私たちの使命:豊富な、高品質を有効にするには、 RTCアプリケーションは簡単なJavaScript APIとHTML5を経由してブラウザで開発することができます。

   WebRTCイニシアチブは、Googleは、MozillaとOperaでサポートされているプロジェクトです。
   このページは、 Google Chromeのチームによって維持されている。

   note :
   via                ・・・~を介して
   capabilities        ・・・機能
   optimized        ・・・最適化
   purpose            ・・・目的

2. アーキテクチャ

  http://www.webrtc.org/reference/architecture
 
  大まかに2つの層に分かれる
  (1) ネイティブな箇所 C/C++で実装
  (2) WebAPI
 
  (1)内に存在するコンポーネント
 
  ① WebRTC Native C++ API
 
  ② 通信/セッション
     セッションコンポーネントはジングル/ XMPPプロトコルを使用するか、必要とせずに、 libjingleから再使用部品によって構築されています。
 
     1. RTP Stack
        RTPのためのネットワーク?スタック、リアルタイムプロトコル。
        ※RTP ・・・ Real-time Transport Protocol(リアルタイム トランスポート プロトコル、RTP)は、
        音声や動画などのデータストリームをリアルタイムに配送するためのデータ転送プロトコルである。
        届かなかったパケットは無視。UDPがメイン。UDP以外の通信プロトコルも使える。
       
     2. STUN/ICE
        コールはさまざまなタイプのネットワークを横切る接続を確立するためにSTUNとICEメカニズムを使用することができ成分。
       
     3. Session Management
        コールセットアップと管理層を可能にする、セッション層を抽象化。これはアプリケーション開発者にプロトコル実装の決定を残します。
 
  ③ 音声認識 Voice Engine
 
  ④ ビデオ Video Engine
     ビデオエンジンは、カメラからネットワークへ、ビデオのフレームワークビデオメディア鎖であり、ネットワークからスクリーンに関する。
    
     1. VP8
        VP8(ブイピーエイト)はGoogleに買収されたOn2テクノロジー社が開発した、ビデオコーデックの一つである
        ※関連項目
          WebM ・・・ ビデオコーデックにVP8、音声コーデックにVorbis、メディアコンテナとしてMatroskaのサブセットを採用している。ファイルの拡張子は「.webm」。
          パテントプール ・・・特定の技術に対するライセンス規約の団体
         
     2. Video Jitter Buffer
        ビデオの動的ジッタバッファ。ジッタおよび全体的なビデオ品質上のパケット損失の影響を隠すのに役立ちます。
       
        ※Jitterとは・・・ジッター (Jitter) とは、電気通信などの分野において、時間軸方向での信号波形の揺らぎ自身や、
        その揺らぎによって生じる映像などの乱れのことを指す。「いらいらする」という意味の英語"Jitter"に由来する。
       
     3. Image enhancements
        例えば、 Webカメラによる画像キャプチャからビデオノイズを除去する。
       
       
       
       
       
       
       
       
       
       
       

99. PeerJSライブラリ

    PeerJSが完了すると、構成、および使いやすいピアツーピア接続APIを提供することでブラウザのWebRTC実装をラップ。
    何もIDと装備されていて、ピアはリモートピアにP2Pデータやメディアストリーム接続を作成することができます。



2013年10月19日土曜日

RaspberryPiと戯れてみる 3 - VPNサーバー化 -

■ Raspberry PiをVPNサーバー化してみる

まず、VPNを作る代表的なプロトコルである、「PPTP」、「IPSec」を勉強。
どちらも認証、暗号化、カプセル化を行う。

・PPTP(Point to PointTunneling Protocol)

・・・Microsoft社によって提案された暗号通信のためのプロトコル。2台のコンピュータの間で情報を暗号化して送受信するので、インターネットを通じて安全に情報をやり取りできる。企業などで、インターネットを介した遠距離のLAN間接続や、社員がインターネットを通じて社内LANにアクセスするのに使われる。同社のWindows NTシリーズには標準でPPTPの機能が付属する。

・IPSec(Security Architecture for IP)

・・・インターネットで暗号通信を行うための規格。IPのパケットを暗号化して送受信するため、TCPやUDPなど上位のプロトコルを利用するアプリケーションソフトはIPsecが使われていることを意識する必要はない。現在インターネットで使われているIPv4ではオプションとして使用することができるが、次世代のIPv6では標準で実装される。


今回はPPTPを使用したVPNサーバ作りに挑戦
参考サイト 
http://qiita.com/sumyapp/items/b7300a9ffa316d676aa1

1. Pptpdのインストール

 pi@raspberrypi ~ $ sudo apt-get install pptpd
 


















2. Pptpdの設定

自身のIPと接続クライアントへの割当IP
【 /etc/pptpd.confの編集 】
pi@raspberrypi ~ $ diff /etc/pptpd.conf /etc/pptpd.conf.org
76,77c76,77
< localip 192.168.0.4
< remoteip 192.168.0.234-238,192.168.0.245
---
> #localip 192.168.0.1
> #remoteip 192.168.0.234-238,192.168.0.245

3. DNSの設定

接続してきたクライアントが使用するDNSサーバの設定
【 /etc/ppp/pptpd-optionsの編集 】
pi@raspberrypi ~ $ diff /etc/ppp/pptpd-options /etc/ppp/pptpd-options.org
55c55
< ms-dns 192.168.0.1
---
> #ms-dns 10.0.0.1

4. 接続クライアントのアカウント設定

【 /etc/ppp/chap-secretsの編集 】
pi@raspberrypi ~ $ sudo diff /etc/ppp/chap-secrets /etc/ppp/chap-secrets.org 
3c3
< chopper pptpd chopper *
---

5. IPフォワード設定

IPフォワード(IPフォワーディング - IP forwarding)とは
・・・他のホストから受け取ったIPパケットを別の経路へ向けて再送信すること。これを専門に行うネットワーク機器にはルータがある。また、プロキシサーバやファイアウォールがプライベートネットワークとインターネットの間で行っているのもIPフォワーディングと言える(厳密には、IPより上位のプロトコルに基づいて動作していることがあるのでIPフォワーディングに含めないという立場もある)。IPフォワーディングの際に一定条件を満たすパケットのみを転送するようにしたものがパケットフィルタリングである。

※宛先アドレスが自分では無いパケットも転送するようにしなければ、VPN経由で接続した端末からのパケットはすべて破棄されてしまう

【 /etc/sysctl.confの編集 】
pi@raspberrypi ~ $ diff /etc/sysctl.conf /etc/sysctl.conf.org
28c28
< net.ipv4.ip_forward=1
---
> #net.ipv4.ip_forward=1
44c44
< net.ipv4.conf.all.accept_redirects = 0
---
> #net.ipv4.conf.all.accept_redirects = 0
52c52
< net.ipv4.conf.all.send_redirects = 0
---
> #net.ipv4.conf.all.send_redirects = 0

※参考サイトとに書いてある項目が無かったりしたので、あるのだけコメントを外す。

6. MTU/MRUの設定

【 /etc/ppp/optionsの編集 】
pi@raspberrypi ~ $ diff /etc/ppp/options /etc/ppp/options.org
80c80
< mru 1280
---
> #mru 542
185c185
< mtu 1280
---
> #mtu <n>

6. ルータの設定

ポートフォワード設定
一般的な家庭では、ブロードバンドルータの類の下にサーバをぶらさげているかと思います。このように pptpd サーバが LAN の内部にある場合、ポート転送が必要になります。ルータの設定にて TCP の 1723 番ポートと、プロトコルの 47 番を pptpd サーバに転送してください。TCP の 47 番ポートではなく、47 番のプロトコル(GRE)であることに注意してください。

※GREとは
GRE ( Generic Routing Encapsulation ) はトンネルプロトコルの1つです。RFC1701, 2784で定義されています。トンネルプロトコルにはLayer2トンネリングのL2F, PPTP, L2TPとLayer3トンネリングのGRE, IPsec等があります。トンネリングとは、あるトラフィックを別のプロトコルでカプセル化して伝送することにより、通信を行う技術です。
パケットのカプセル化とその解除はトンネルの両端の機器で行う為、両端の機器が直結しているように見えます。

・自宅ルータの設定内容
ルータ ATerm BL190HW    ATerm D9C9DC






これでいける。。。はずだが、Android端末からは接続できませんでした。。
※ちなみにRaspberry PIにはパケットが到着している模様
解析ツール sudo tcpdump -s0 -i eth0 -X port 1723
http://linux-biyori.sakura.ne.jp/setting/st_tcpdump.php

※追加 2013.10.26
その後つながらない事の調査

http://www.kurobuti.com/blog/?p=4275
↑サイトを参考に /var/log/pptpd.logにログ出力

・Android端末からの接続時のエラーログ
Plugin /usr/lib/pptpd/pptpd-logwtmp.so loaded.
pptpd-logwtmp: $Version$
using channel 8
Using interface ppp0
Connect: ppp0 <--> /dev/pts/1
sent [LCP ConfReq id=0x1 <mru 1280> <asyncmap 0x0> <auth chap MS-v2> <magic 0xbfcfb351> <pcomp> <accomp>]
sent [LCP ConfReq id=0x1 <mru 1280> <asyncmap 0x0> <auth chap MS-v2> <magic 0xbfcfb351> <pcomp> <accomp>]
sent [LCP ConfReq id=0x1 <mru 1280> <asyncmap 0x0> <auth chap MS-v2> <magic 0xbfcfb351> <pcomp> <accomp>]
sent [LCP ConfReq id=0x1 <mru 1280> <asyncmap 0x0> <auth chap MS-v2> <magic 0xbfcfb351> <pcomp> <accomp>]
sent [LCP ConfReq id=0x1 <mru 1280> <asyncmap 0x0> <auth chap MS-v2> <magic 0xbfcfb351> <pcomp> <accomp>]
sent [LCP ConfReq id=0x1 <mru 1280> <asyncmap 0x0> <auth chap MS-v2> <magic 0xbfcfb351> <pcomp> <accomp>]
sent [LCP ConfReq id=0x1 <mru 1280> <asyncmap 0x0> <auth chap MS-v2> <magic 0xbfcfb351> <pcomp> <accomp>]
sent [LCP ConfReq id=0x1 <mru 1280> <asyncmap 0x0> <auth chap MS-v2> <magic 0xbfcfb351> <pcomp> <accomp>]
sent [LCP ConfReq id=0x1 <mru 1280> <asyncmap 0x0> <auth chap MS-v2> <magic 0xbfcfb351> <pcomp> <accomp>]
sent [LCP ConfReq id=0x1 <mru 1280> <asyncmap 0x0> <auth chap MS-v2> <magic 0xbfcfb351> <pcomp> <accomp>]
LCP: timeout sending Config-Requests
Connection terminated.

Modem hangup

LCP: timeout sending Config-Requests ◀︎ここが怪しい?

Connect: ppp0 <--> /dev/pts/1 ◀︎これは何をしているのか?
https://www.grnt.ne.jp/internet_config.php?cnt=40
↑ここにこんな記述が
PPPOEで接続した場合の仮想NICは【ppp0】になります。iptables等でNICを設定している場合は【ppp0】に変更して下さい

PPPoEとは・・・
http://www.n-assist.com/booknavi/pppoe.htm

NICとは・・・
http://e-words.jp/w/NIC-2.html

iptablesとは・・・
Linuxに実装されたファイアウオール機能です。Linuxカーネル2.4以降に組み込まれています。
 iptablesでは、コンピュータがやり取りするパケットを、あらかじめ定義しておいた「チェイン」単位に分類し、チェインごとにどのような処理を行うかを「ルール」として設定します。

 主なLinuxディストリビューションでは、次の3種類のチェインが標準で用意されています(図1)。

・INPUT
(サーバーへ到達するパケット)
・FORWARD
(サーバーを通過するパケット)
・OUTPUT
(サーバーから送出するパケット)
 ユーザーが新しいチェインを追加することもできます。

 ルールでは、パケットの送出元(ソース・アドレス)やパケットのあて先(ディスティネーション・アドレス)などを指定し、該当するパケットに対し、どのような処理を行うかを指定します。処理には、パケットを破棄する「DROP」、拒否パケットを送出する「REJECT」、許可をする「ACCEPT」などを指定します。

現在のiptablesの設定
pi@raspberrypi ~ $ sudo iptables -L
Chain INPUT (policy ACCEPT)
target     prot opt source               destination         

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination   


RaspberryPiと戯れてみる 2 - 無線化 -

■ 無線化、断念・・・orz

    http://d.hatena.ne.jp/pasela/20121224/raspi_wlanのサイトを参考に
    無線化を試みた所、できずに断念しました。別の日に再挑戦予定!!

1. 無線LANアダプタ購入

     

















サイトと同じものを購入。ができませんでした。

2. とりあえずアダプタを挿入し起動

確認に使用したコマンド一覧
NO コマンド 説明
1 dmesg カーネルのメッセージバッファの内容を表示する。"display message" の略。
2 lsmod カーネルのモジュール状態を表示する
3 lsusb USBでバイス情報の表示

デバイス認識はされているっぽい。
後はサイト通りに進めていくが、接続できない。。。

3. GUIからWifi Configを使用して接続

とりあえずGUI起動。
$ startx

http://mmbrothers.exblog.jp/16810289のサイトを参考に進めるが。。
WifiConfigを起動してもアダプターを認識しないのは何故?

ん〜何がなんだか分からないので、今日は断念!!


2013年10月16日水曜日

gem install XXXX で 「~ native gem requires installed build tools.」が出てきた場合



DevKitを入れるといいらしい
http://github.com/oneclick/rubyinstaller/wiki/Development-Kit

※DevKit
どうやらWindows上のネイティブな部分をさわるgemをinstallする
時に必要らしい

1. DevKit-tdm-XXXXXXXXXXXXXXX-sfx.exeをダウンロード

2. 解凍したディレクトリ直下に移動

3. ruby dk.rb init する
   config.ymlが作られ、中にrubyのパスが書かれるらしい。

4. ruby dk.rb install する

これでgem install できるようになる

2013年10月14日月曜日

WebRTC調査 2

今回はWebRTCで一番煩わしい部分のP2P通信を担当してくれる
ライブラリのPeerJSを解説。

PeerJSとは・・・
WebRTC というブラウザ同士がサーバなしで通信しあって(要するにP2P)ビデオチャットなどができる仕組みの一部として自由なデータの送受信もできる機能があって、そこの部分を簡潔にラッピングしてくれるライブラリ

使い方は2通り

・ Cloud上にサーバーを用意してくれており、アカウント登録を行う事で利用可能
    http://peerjs.com/peerserver
    名前、メールアドレス、パスワードを送るとメールが届き、新しい API キーを作成できる画面に
    くる。「Create new API key」ボタンを押すと最大同時接続数を入力する画面が出てくるけど、
    取りあえず初期設定のまま進むと API キーが発行された。

・ ローカルネットワーク上に自分でサーバーも作成可能

 使用方法

 1. htmlページにPeerJSを使用する為のPeerJSクライアントをinclude
  <script src="http://cdn.peerjs.com/0.3/peer.min.js"></script>
 
 2. Peerオブジェクトを作成
  var peer = new Peer({key: 'lwjd5qra8257b9'}); 
 ・keyはP2P通信で相手に自分の存在を通知するキー
 ・第二引数はアカウント情報
 
 3. 接続成功時
  peer.on('open', function(id) {
    console.log('My peer ID is: ' + id);
  });

APIリファレンス


福岡千代県庁の地下にあるコーヒー専門店 Town Square

Town Square


福岡市の地下鉄千代県庁ビル1階にある
コーヒーメーカー機器や、コーヒー豆が色々揃えてある。

・リンク
http://www.townsquare-coffee.com/


大きな地図で見る

・プレスコーヒー
























・自家製ティラミス

LAWSON MACHI cafe

ローソンのアイスコーヒー

 ・価格・・・180円
 ・味・・・ファミマと比べてやや苦味がある
 ・オーダーすると店員さんが作ってくれる


2013年10月5日土曜日

WebRTC調査 1


WebRTC = Web Real-Time Communications

・ブラウザ上でリアルタイムコミュニケーションを実現する為の仕様
・双方向性のあるコミュニケーションを必要とする様々なアプリ開発
 ビデオ/音声チャット
 テキストの共同編集
 ゲーム等
 
 
 P2P通信を利用して端末間の相互接続が可能
 サーバを経由しない?
 ※でも最初ネゴシエーションする為のサーバは必要
    そしてNAT越えする場合(ルータのNAT越えとかでなくトンネルサーバ)も必要
        http://www.infoq.com/jp/news/2013/06/wrangling-webrtc
 UDPプロトコル
 
 アーキテクチャ
 1Media Capture and Streams (getUserMedia)
   ・ローカルのカメラやマイクからストリームデータを取得、加工も可能
   ・通信時のストリーム定義
 2WebRTC 1.0
 
 getUserMedia
  webkitでは・・・
   canvasと連携して画像処理
   web audio apiと連携して音声処理
   顔認識、ジェスチャー
 
  WebRTC 1.0 WebRTC Between Browsers
  ・主にP2P通信の為の仕様が定義
  ・端末間の相互接続の為のネゴシエーションを行う
  ・P2Pによるデータ通信(Data channel)などもある
  ・APIは複雑で難解?

  P2P通信を始めるための事前準備
  ・最初のネゴシエーションを仲介する為のサーバを用意WebサーバでオK
  ・NAT越えするためのICEサーバを用意


  NAT traversal (NAT越え)の問題
  ・P2P通信を開始する為にはお互いの端末のグローバルアドレスを知る必要がある
  ・しかし・・各端末お前にはファイアウォールなどがあるので、一筋縄ではいかないごた
  ・そのために必要なのがICE
  ・ICEで取得したグローバルIPとポート番号を通信するホスト間で交換

  ICE
  ・STUNやTURNなどのNAT越えの手順をよろしくやってくれるもの
  ・STUNでだめならTURNで

 STUN (Simple Traversal of UDP through NATs)
 ・NAT越えの方法の一つ
 ・通信するホストがSTUNサーバにUDP接続を行う
 ・NATが割り当てたグローバルIPとポート番号を取得
 ・STUNで対応できるNATはフルコーン型、制御コーン型、ポート制御コーン型の3つ

 TURN (Traversal Using Relay NAT)
 ・NAT越えの方法の一つ
 ・対称型や多段NATでもオK
 ・すべての通信をTURNを経由して行うので、高負荷。高コスト

 APIのほとんどがこの部分を解決する為のネゴシエーション


 ライブラリがあるっぽい
 1. simpleWebRTC
     公式ホームページ
     http://lab.adn-mobasia.net/?p=1887
 2. Peer.js
    ・Data Channelのみサポート
    ・ブローカーサーバーが提供されている(API Keyの申請が必要)
    ・connect()メソッドでP2Pのネゴシエーションを完了
     公式ホームページ
     個人ブログ
 3 webRTC.io
    http://www.moongift.jp/2012/10/20121019-2/

ファミマのアイスコーヒー

値段は180円と高め。
味は、苦みはそんな無くアメリカンな感じ
店員さんが作ってくれて、何故かフタがホット用?


セブンイレブンのホットコーヒー


・値段・・・100円
・サイズ・・・レギュラーとラージがある

値段100円でドリップされたコーヒーが飲めるのは良い。
味は少し苦みがあって100円にしては美味しいと思う




2013年10月4日金曜日

RaspberryPiと戯れてみる 1 - 環境設定 -

■ 概要
     ModMyPiでモデルBを購入。ケースはオレンジ色のケースを一緒に購入。
     SDカードはTranscendのClass10 microSDHCカード SD変換アダプタ(¥1,380)を購入




























1. とりあえず、OSはRaspbianを入れてみた。
http://www.lifehacker.jp/2013/02/130226raspberry_pi_guide.html

2. 日本語環境に設定してみたが、少し文字化けしている・・


3. PS3のLANとHDMIケーブルを拝借しsshで接続できるか確認
   IP: 192.168.0.4     pi/raspberryでログインできた

Mac Book Air からターミナルを起動し以下コマンドで接続
ssh pi@192.168.0.4


4. VNCで接続できるようにした。以下参考サイト
   自動で起動するように設定
   Xターミナルを起動しなくても繋がる模様


5. rubyを導入。以下参考サイト
   サイトと同じバージョンが導入される


6. Lチカを行う為、ブレッドボード+LED+etcキットを購入



7. rubyを使用してLチカ成功


#!/usr/bin/ruby
system('echo "4" > /sys/class/gpio/export')
system('echo "out" > /sys/class/gpio/gpio4/direction')
[0, 1].cycle do |sw|
system("echo #{sw} > /sys/class/gpio/gpio4/value")
sleep(0.5)
end

※参考にしたサイト


8. コマンドラインからGPIOを制御できるWiringPiライブラリをインストール


9. LEDの明るさを段階的に調整しようとしたが、どうするのか?
 どうやらPWMがキーワードっぽい。


10. 後々を考えてFTPをインストール

     ※mac側のクライアントとしてCyberduckをインストール

11. 電源を落としたい場合
sudo halt
または・・
sudo shutdown -h now