思い出は銀の弾

ひよっこエンジニアが調べたことや経験したことをまとめます!

feedly APIを使ってみる

RSSリーダーとして使っているサービス、feedlyAPIを使おうとしたところ意外と引っかかったので、使い方を書き残しておきます。

今日(2015/11/19)時点のAPIV3で確認をしています。

アクセストークンを取得する

Web APIは様々にありますが、企業が公開しているAPIを利用する際は往々にしてアクセストークンというものが必要になります。

各ユーザーに紐付けられた文字列であり、公開元がアクセスの管理・解析をする目的として必要であるという理解を私はしています。

手順は簡単です。

  1. 認証

    https://feedly.com/v3/auth/devにアクセスし、いずれかの方法(すでに自身が使っている認証方法)を選択して認証を行います。

    f:id:masayuki610930:20151119001710p:plain

  2. メッセージの確認

    認証後の画面に記載されている連絡先をチェックします。

    f:id:masayuki610930:20151119002122p:plain

    今回はGoogleで認証を行ったため、自分のアドレス****@google.comのメールをチェックします。

  3. リンクへのアクセス

    メッセージがfeedlyから送られてきているので、記述されているURLに飛ぶと、

    f:id:masayuki610930:20151119002125p:plain

    アクセストークンが表示されています。

    表示欄は小さいですが、横にスクロールされて結構な文字数となります。(今回試したところ242文字ありました。)

使ってみる

curlで問い合わせ結果をGETで取得してみましょう。

問い合わせ形式はこんな感じです。

$ curl -s -H 'Authorization: OAuth [トークン]' [アクセスURL]

取得したトークンを今仮に "MyToken" という文字列、

アクセスURLをhttps://cloud.feedly.com/v3/categoriesとすると、

$ curl -s -H 'Authorization: OAuth MyToken' https://cloud.feedly.com/v3/categories

となります。

アクセスURLは欲しい情報により異なるので、公式ドキュメントを見てみてくささい。

結果はJSONで帰ってくるみたいなので、あとはこれをパースしてうまく活用すればOKです。

curlのオプションである -s と-H はそれぞれ、

-s : 進捗状況やエラーを表示しない

-H : HEADER HTTPヘッダにHEADERを追加もしくは変更する

という意味らしいです。参考

これでとりあえずアクセスが出来るようになりました!

AndroidのMediaRecorderで録画・録音する際はクラス関数の順番に注意を!

Androidで動画の保存(録画)や音声の保存(録音を)する際、MediaRecorderを使用します。

さくっと使えて便利なクラスなのですが、クラス関数の利用順番がしっかりと決められているので、使用例を載せておきます。

一瞬ハマったので。

AndroidのMediaRecorderを使った録画・録音の設定

順番については公式ドキュメントを読めば一発なんですが、録音のあり/なしをif文分岐で2度書くのがめんどくさく感じて、つい何も考えなしにまとめてしまったりするんですよね。

反省。

MaterializeのCharacter Counterの重複解消方法

前回紹介したデザインフレームワークMaterializeの便利機能に、文字数カウントがあります。

サンプルはこんな感じです。

しかし、ドキュメントにしたがってそのまま書くと、下図のようにカウンターが重複してしまいます! f:id:masayuki610930:20150805002709p:plain

修正するのは簡単です!

デザインフレームワークMaterializeのcharacter counterの重複解消

.removeで生成されたelementを消してあげましょう!

たったこれだけで、スッキリ解決です!!

Webでマテリアルデザインを簡単につくれるMaterializeを使ってみた

Googleが言い出したマテリアルデザイン。

Android 5.0:LolipoのCMを最近目にしたりしますが、Lolipopが広まってくるにつれ、世の中にのなんとなく認知されてきたかなと思ってます。

このマテリアルデザインをWeb上で表現する際に強力にサポートしてくれるMaterializeというものがあり、最近ちょっとした経緯でこれを使いました。

サンプルとhowtoをまとめたので御覧ください。

Materializeの使い方 f:id:masayuki610930:20150712224946p:plain

github.ioにあげてます。 github.com

公式のドキュメントはかなりしっかりしてていい感じです。が、

  • 何ができるか
  • どうしたらできるか

という情報の所在と知らされる順番がいまいちにように感じてしまい、だったらせっかくだしと思いまとめた次第です。

間違い等なにかあれば教えて下さい!

角度や方向に対する評価関数

角度や方向に対する評価関数について考えました。

使用例

サッカーを例に考えます。

f:id:masayuki610930:20150629222057p:plain

今ボールを持ったプレイヤーに対して、近くにいる仲間A,Bがいるとき、どちらにボールをパスしたらいいでしょうか?

ゴール近くにいる仲間Aにパスする!と皆さん考えるでしょうが、例えば仲間Aと仲間Bに能力差があり、

能力差:仲間A<仲間B

という場合では答えは難しいです。また、仲間までの距離も考慮に入れたくなります。

いろいろな要素が考えられますが、今回はこのうち「角度」に注目して角度のみに関する評価関数を考えてみました。

普通の考え方

プレイヤーを中心にゴール方向を0度とし、仲間が360度中のどこにいるかを元に考えます。

単純に考えると、0度に近いほど良い評価値を与えればよく、

{ \displaystyle
evaluation = cos(\theta)
}

となり、負数を無視しゼロと置換えて次のようになります。

f:id:masayuki610930:20150630083751p:plain

提案

考え方

先の例で充分な例もあるでしょうが、

  • もっとシビアな評価
  • もっとメリハリのある評価

を求めるケースもあるでしょう。そこでシグモイド関数を使いこれを解決します。

評価関数

{ \displaystyle
evaluation = \frac{1}{1+\exp(-\alpha(\frac{|\theta_x-180|-180+\theta_h}{\theta_h}))}
}

{ \displaystyle
\theta_x
} は仲間の角度、

{ \displaystyle
\theta_h
} は評価値半減点、

{ \displaystyle
\alpha
}シグモイド関数のゲインを示します。

評価値半減点とゲインはパラメータ(設定値)であり、評価値半減点に評価値0.5を取る角度の値を、ゲインにはとりあえず5~10の値入れておけばいいです(後述)。

関数をプロットすると、次のようになります。

f:id:masayuki610930:20150630083810p:plainf:id:masayuki610930:20150630083814p:plain

図の通り、パラメータ評価値半減点により高い評価を与える角度の範囲設定を、ゲインにより評価値のメリハリの変化をつけることが出来ました。ゲインについては実際に試してチューニングすることをオススメします。

注意点

この手法は評価値が極めて低い値を取ることが理論上仕方ありません。プログラムに起こす際は、評価値半減点を閾値として、今回の関数に掛けるかどうかを判断するとよいでしょう。

この点だけを気をつけて頂いて、今回の提案手法をぜひ利用してみてください。

知っておくと嬉しい、ストレージの技術用語

スケールアップ型とスケールアウト型

スケールアップは、サーバーのCPUやメモリーといったハードウエアを高性能なものにして処理性能を上げる方法。一方のスケールアウトは、サーバーの数を増やすことで性能を上げる方法です。後者の場合、1台1台が高性能でなくても、大量のサーバーで同じWebサービスを動かせば処理性能を上げられます。スケールアップより構築コストが安く済む、1台くらいサーバーが停止してもWebサービスを提供し続けられる、というメリットがあります。

SPOF

Single Point of Failureのこと。

単一障害点(たんいつしょうがいてん。英: Single Point of Failure, SPOF)とは、その単一箇所が働かないと、システム全体が障害となるような箇所を指す。情報システム工学や通信、サプライチェーン・マネジメントなどの分野で使われる概念である。単一故障点と訳されることもある。

CVS

Hyper-V 2.0は、「クラスタ共有ボリューム(Cluster Shared Volume: CSV)」という特殊なボリューム・マネージャ機構をWSFCに実装した。これにより、ファイル・システムは通常のNTFSのままに、複数ホストからの同時アクセスを可能にしたのである。

NFS

概要

Network File Systemのこと。サーバ・クライアントシステムの体型であり、サーバサイドのストレージにクライアントからアクセスを行い読み書きを行うことが可能である。

仕組み

NFSプロトコルを利用した通信で行う。一般的にUDPまたはTCPの2049番ポートが利用される。サーバサイドで特定のディレクトリ領域のアクセスの許可・制限をかけ、クライアントはそのアクセスポイントに対しマウントをする。

使用例

  • ファイルの共有
  • フリーアドレス(どの端末でも自身の環境になる)
  • ファイルの保存やバックアップ専用(耐久性の高いHD)

NFSv3/v4の違い

  • ステートフルなインタラクションと権限移譲の導入
  • クライアントは一時的な排他的アクサセス
  • クライアント側のキャッシュ処理

などの変更がv4にあり、セキュリティー面での改善が施された。パフォーマンス的には、メリットがあまりないとの検証結果が出ている。

知っておくと嬉しい、ネットワークの技術用語(その2)

ルーティングプロトコル

BGP

Border Gateway Protocolの略で、AS間の通信交換のために作られたプロトコル

BGPはTCPポート179番を利用して通信を行います。BGPルータはピアを確立するために、メッセージと呼ばれる形式で機能情報を交換します。メッセージはBGPの状態により数種類存在します。ピアが確立した後は、経路情報を伝達するためのメッセージを定期的に交換し、お互いの持つ経路情報を保持、更新し続けます。 BGPではピアを確立するルータが同じAS間である場合と、異なるAS間である場合とで異なる方式で経路情報を処理します。同じAS間でのピアをiBGP(内部BGP)ピアと呼び、異なるAS間でのピアをeBGP(外部BGP)ピアと呼びます。

EIGRP

EIGRP(Enhanced IGRP)はCisco独自のIGRPを改良した、クラスレスの拡張ディスタンスベクタプロトコルです。 EIGRPでは、クラスレスルーティング、VLSMのサポート、手動集約、ルーティング認証、マルチキャストによる 差分アップデート、DUALを使用したIGP一番の高速収束、レイヤー2でのシームレスな接続、リンクステートの 特性といえるHelloによるネイバー検出と隣接関係の維持、ルーティングのループフリーなどが実現されており、 Cisco製品だけで構成された小規模、中規模ネットワークにおいては最も適した IGP と言えることができます。

OSPF

OSPF(Open Shortest Path First)は、ルーターやレイヤー3(L3)スイッチがパケットの転送先を動的に決定するためのルーティングプロトコルの一種である。主に中・大規模ネットワークで使う。  L3スイッチでOSPFを動作させると、ネットワークの経路情報(LSA)を他のL3スイッチとやり取りし、ネットワーク構成図(トポロジーマップ)を作る。その構成図から最適経路を判断し、パケットの転送情報であるルーティングテーブルを作成する(図)。L3スイッチはこのルーティングテーブルを見てパケットを送る。

RIP

RIP(Routing Information Protocol)は、IP用のルーティング・プロトコルとして、非常に古くから使用されています。このプロトコルは、UDPのブロードキャスト・データ・パケットを用いて、経路情報を隣接ルータにアナウンスします。この中には、「メトリック」と呼ばれるあて先ネットワークまでのディスタンスを表す情報(ルータのホップ数)が含まれており、ルータを超えるごとに1つずつ加算されます。RIPは、このメトリックを利用してネットワーク・トポロジを把握するため、「ディスタンス・ベクタアルゴリズム」に基づいたルーティング・プロトコルと呼ばれています。RIPでは、メトリックがより少ない経路情報が最適経路として使用されます。最大メトリックは15となっており、これを超えた場合は到達不能と見なされます。RIPでは、これらのすべての経路情報を30秒周期で隣接ルータにアナウンスすることにより、情報の更新を行います。

セキュリティー

ARPキャッシュポイズニング

ARPキャッシュを悪用した盗聴方法の一つです。 具体的には、下図のようにARPによる問い合わせがあった際にMACアドレスを偽った応答を相手に返送することで誤った内容を記録させ、以降、本来の宛先とは異なる宛先にデータを送信させようとします。

802.1X認証

IEEE802.1xとは、有線LANや無線LANで使用される認証について規定したプロトコルです。このIEEE802.1Xに対応したLANスイッチのポートでIEEE802.1Xが有効な場合、そのポートにPCなどを接続してもすぐにLAN接続が行われることはなく認証された機器のみが接続されます。IEEE802.1Xは検疫ネットワークでは中核の技術です。

知っておくと嬉しい、仮想化の技術用語

qemu

オープンソースエミュレータ。ホストにカーネルドライバを必要としない。プロセッサをエミュレートするだけでなく、必要なすべてのサブシステムをエミュレートできる。

kvm

Kernel-based Virtual Machineのことで、Linuxカーネルに搭載されているハイパーバイザ。

KVMは仮想化のためのCPU拡張命令(HVM)をカーネルモジュールを介して使用するQEMUの特殊なオペレーティングモード。

libvirt

仮想化管理用の共通APIを提供するオープンソースプロジェクトであり、仮想間マシンの制御を抽象化したライブラリ。

qemu/kvmの場合VMのハードウェア仕様などを定義するXMLファイルは、標準では/etc/libvirt/qemu/.xmlにインストールされる。同様に仮想ネットワークのXML定義ファイルは/etc/libvirt/qemu/networks/.xmlにインストールされる。

virsh

libvirtコマンドラインツール。virshツールlibvirt管理APIを土台にして構築されている。

qemu-img

virshのコマンドの一つ。仮想化ゲストイメージ、追加のストレージデバイス、及びネットワークストレージのフォーマットに使用される。

qcow2, raw

qemu-imgが扱うイメージ形式のこと。qcow2はスナップショットが取れ、ディスク領域を拡張する際、IO性能が極端に劣化する。rawはスナップショットは取れず、ディスク領域を拡張する際のIO性能劣化はqcow2より優れる。

ブリッジ

セグメントとセグメントを接続する機器のこと。LAN同士のパケットのやりとりの橋渡しを子なう。リピータの機能に加えて、MACアドレスを元にフィルタリングを行うことができる。

Linux Bridge

ソフトウェアブリッジを使ってハードウェアをエミュレートできる。仮想化アプリケーション内で仮想NICを設定するなどが可能。

tapデバイス

仮想ネットワークのカーネルデバイスのこと。ソフトウェアで完全にサポートされているネットワークデバイスである。リンクレイヤをシュミレートし、イーサフレームのようにL2で動作する。

OpenStack

オープンソースで開発されているクラウド環境構築用のソフトウェア群。AWSのようなものをじぶん自身の環境でプライベートに構築できるものと捉えるとわかりやすい。各フェーズを管理するもの、認証系を担当するもの、WebUIでかんりできるもの、オーケストレーションを行うものなど、多くのツールがある。

知っておくと嬉しい、サーバの技術用語

BMC

Base Management Controllerの略で、主にサーバに搭載される管理用のコントローラー。リモートから電源のON/OFFの操作などが可能。

Baremetal

物理ハードウェアにより近いところで処理を行う仮想化のこと。

KVM

Kernel-based Virtual Machineの略で、OS仮想化の方法。VMWareXenはホストOSを介してOS仮想化を実現するが、KVMLinuxカーネル自体をホストのように制御する。Baremetalを実現する。

http://image.itmedia.co.jp/ait/articles/0903/12/r12fig02.jpg

(出典:@IT)

SENSU

サーバの監視を行うツール。クライアントが立ち上がると自動で監視対象に登録される。NAGIOSではこれができなかったらしい。

Fabric

デプロイ・システム管理ツール。一括に一斉にコマンドを投げたりするときに楽。

Open Compute

大手ソフトウェアサービスサプライヤーにとって効率のよいサーバなどの仕様を、ハードウェアベンダーに提供・依頼すること。過去のハードウェアベンダーが市場を主導するもでるからの脱却を狙う。

NEMA規格

アメリカ電気工業会によって標準された規格。この規格に合うアプライアンスでデータセンターが構成されていたりする

PDU

Power Distribution Unitの略で、データセンターで使われる電源タップみたいなもも。アプライアンスごとに使用電力が測定できたり、ラック内の温度や湿度情報を取得できる。

【参考にしたもの】

続きを読む

知っておくと嬉しい、ネットワークの技術用語

セキュアネットワーク

一般のネットワークと隔離をさせ、アクセスを厳しく制限したネットワークのこと。 機密性の高い情報をこのネットワーク配下に置き、外部から容易にアクセス出来ないようにする。

IDS

Intrusion Detection Systemの略で、不正侵入を検知する機能。 通過するパケットを監視することで実現する。 ファイアフォールはIPを参照するのみであり、その先での不正侵入を検知できる。

IPS

Intrusion Prevention Systemの略で、不正侵入を妨げる機能 不正侵入に関連するセッションやトラフィックを切断する。

PCI DSS

Payment Card Industry Data Security Standardの略で、クレジットカード会員データを安全に取り扱う事を目的として策定されたセキュリティの世界基準。

NAT

Network Address Translationの略で、プライベートIPアドレスグローバルIPアドレスに変換する技術。

ICMP

Internet Control Message Protocolの略で、誤りの通知や通信に関する情報の通知に使われる。 ロードバランサーのヘルスチェックで使用されている。

GSLB

Global Server Load Balancingの略で、DCが複数ある際にDC単位で広域に負荷分散を行う機能。 災害対策などを目的にしている。

その他の関連用語

Splunk

サーバへのアクセスログなどを集約・解析する製品。 フォーマットの違いを吸収してくれ、グラフ化も行うことが可能。

アプライアンス

特定の機能や用途に特化した専用機器のこと。特にネットワーク機器やサーバ製品などで提供されることが多い。

【参考にしたもの】

続きを読む