Welcom to WebAPI World

Introduction 本記事はHZ Colloquium Advent Calendar 2014の12/5分の記事です。 今日は過激に適当な話も入れながら WebAPI について書いていく。 なお、お仕事で課題を見事に解決できず、明日死亡フラグがたっているなかでの執筆なため 全体的にテンションはおかしめ。 Atom + middleman にて配信中。やっと静的サイトジェネレータの良さがわかってきたころあい。 Welcome to WebAPI World  これを書きながら Web2.0, Mashup などの言葉を思い出す(だいぶ昔の話なのか)。 それらを構成する要素にWebAPIってやつもあった。API (Application Programming Interface)です。 Webの技術をベースにしたAPIです。Webの技術ってなんでしょうか。それはHTTP(HTTPS)やURIのことです。 プロトコルのことです。 ここで思考をもっていってほしくない方向は「HTML = Web」って考え方です。Webページとかの延長線上の話としては 捉えないほうがよいと思います。いったん忘れましょう。 WebAPIといってもいくつか宗教があります。SOAP, WSDL, REST, RESTfulなどがそれです。 今はREST, RESTfulが全盛です。SOAPやWSDLは仕様が複雑すぎてはやらなかったらしいです。 このあたりの歴史は「Webを支える技術」に書いてます。Web関係のエンジニアはあれを読むべき。 「Web」の捉え方が少し変わるから。 REST(ful) WebAPIとは REST(REpresentation State Transfer)の略です。アーキテクチャ(設計方法?設計原則?ととらえればよいのか) の名前です。RESTな方針に沿って設計されているシステムをRESTfulなシステムというらしい。 RESTを極めたものの証なのです。下記はRESTの特徴です。4つ書きます。もう少しあった気もします。 リソース 以下は全てリソースです。 * 大阪の天気 * 俺の明日の予定 * 飲み会の写真 リソースの識別子 全てのリソースは1つ以上の識別子を持ちます。「大阪の天気」だとこうなる。なるほど、識別子とか小難しいが RESTではURIでの指定になるんですね。 http://weather.yahoo.co.jp/weather/jp/27/6200.html ちなみに1つ以上と書いたのは、上記は以下のURIでも同様だから(以下は仮ね)。つまり、同じ情報でも 捉え方は複数あるよということ。そのためにリソース自体が複数識別子で参照されることがありえる。 http://weather.yahoo.co.jp/weather/today/osaka.html どうですか?なんだかセマンティックな話ですよね。セマンティックウェブ!です。ちょっと違うけどそそるでしょ?

Middleman to Amazon S3

AWS にデプロイ用ユーザを作成 IAM(Identity and Access Management)でTravis CIからのデプロイ用ユーザ作成 デプロイ用ユーザにAmazon S3更新権限を付与(Attach User PolicyからAmazon S3 Full Access) Amazon S3 にバケツ(公開用フォルダ)作成 Amazon S3にバケツを作成。PropertiesからStatic Website HostingをEnable website hostingにする。 Index Documentにindex.htmlを指定 Travis CI の設定 AWSデプロイ用ユーザ作成時のAccess Key IDを暗号化 # travis encrypt -r tsujimitsu/codelogue *********** Please add the following to your .travis.yml file: secure: "**********" 同じ要領でSecret Access Keyも暗号化(-rの後ろはgithubのリポジトリを指定) travis encrypt -r tsujimitsu/codelogue ********** Please add the following to your .travis.yml file: secure: "**********" travis.

lightline.vim

itchyny/lightline.vim lightline.vim - A light and configurable statusline/tabline for Vim VIMのステータスラインを機能拡張してくれるプラグイン。ファイル名や文字コードが表示されており、一目でわかるようになります。また、現在のモード(insert, view等)が視覚的に色で区別されるためinsertモードで操作したことによる誤入力を防止できそうです。 とりあえず、これを使っていると傍からはできる人に見えます(想定)

Active Directory Light Weight Directory Service

参考文献 AD LDS http://technet.microsoft.com/ja-jp/library/cc732019(v=ws.10).aspx AD LDSの概要 http://technet.microsoft.com/ja-jp/library/cc733064(v=ws.10).aspx AD LDS インスタンスとは http://technet.microsoft.com/ja-jp/library/cc770698(v=ws.10).aspx AD LDS スキーマとは http://technet.microsoft.com/ja-jp/library/cc753882(v=ws.10).aspx AD LDS レプリケーションおよび構成セットとは http://technet.microsoft.com/ja-jp/library/cc770465(v=ws.10).aspx 新しいAD LDSインスタンスの作成 http://technet.microsoft.com/ja-jp/library/cc731687(v=ws.10).aspx 既存のAD LDSインスタンスのレプリカを作成する http://technet.microsoft.com/ja-jp/library/cc725829(v=ws.10).aspx LDIF ファイルからデータをインポートする http://technet.microsoft.com/ja-jp/library/cc771986(v=ws.10).aspx アプリケーション ディレクトリ パーティションの作成 http://technet.microsoft.com/ja-jp/library/cc771757(v=ws.10).aspx ディレクトリ パーティションの操作 http://technet.microsoft.com/ja-jp/library/cc730613(v=ws.10).aspx グループ メンバーシップを管理する http://technet.microsoft.com/ja-jp/library/cc770527(v=ws.10).aspx AD LDS インスタンスのバックアップまたは復元 http://technet.microsoft.com/ja-jp/library/cc733082(v=ws.10).aspx AD DS のデータを AD LDS と同期する http://technet.

Dsget Commnad on ADLDS

AD LDSの役割を追加するだけでは、dsget, dsaddなどのコマンドが使えない。なので、Active Directory ドメインサービスの役割を追加して、サービスは起動せずにコマンドだけ使う。(powershellからアクセスできるが異様に遅い) http://adtan.wordpress.com/2012/02/12/%E3%82%B3%E3%83%9E%E3%83%B3%E3%83%89%E3%83%A9%E3%82%A4%E3%83%B3-%E3%83%84%E3%83%BC%E3%83%AB%E3%81%A7%E3%81%AE%E3%82%B0%E3%83%AB%E3%83%BC%E3%83%97%E3%81%B8%E3%81%AE%E3%83%A1%E3%83%B3%E3%83%90%E3%83%BC/ http://adtan.wordpress.com/2012/01/02/%E3%82%B3%E3%83%9E%E3%83%B3%E3%83%89%E3%83%A9%E3%82%A4%E3%83%B3-%E3%83%84%E3%83%BC%E3%83%AB%E3%81%A7%E3%83%A6%E3%83%BC%E3%82%B6%E3%83%BC%E3%82%92%E5%89%8A%E9%99%A4/ # dsget group “CN=g_sales,OU=Groups,DC=codelogue,DC=com” -members -s lds01:389 # dsmod group “CN=g_sales,OU=Groups,DC=codelogue,DC=com” -addmbr “CN=test01,OU=Groups,DC=codelogue,DC=com” -s lds01:389 # dsrm “CN=test01,OU=Users,DC=codelogue,DC=com” -s lds01:389 -noprompt dsrmは削除するか確認が返ってくるのでnopromptで自動返答する

CLI ADLDS

ユーザグループ追加などの作業で必要となる。 Windows 2008 R2: Managing AD LDS using the AD PowerShell Module 以下はコマンド例。 New-ADUser -name “test01” -Displayname “test01” -server lds01:389 -Path “OU=Users,DC=codelogue,DC=com” Add-ADGroupMember -identity “CN=g_sales,OU=Groups,DC=codelogue,DC=com” -member “CN=test01,OU=Users,DC=codelogue,DC=com” -partition “DC=codelogue,DC=com” -server lds01 powershellをコマンドプロンプトから呼び出してバッチ処理する http://news.mynavi.jp/column/powershell/013/index.html http://technet.microsoft.com/ja-jp/scriptcenter/powershell_owner05.aspx http://d.hatena.ne.jp/mokkyu/20080421/1208728868 ファイルを準備する C:¥Users¥Administrator¥Desktop¥Test.ps1 Import-Module ActiveDirectory New-ADUser -name “test01” -Displayname “test01” -server lds01:389 -Path “OU=Users,DC=codelogue,DC=com” Add-ADGroupMember -identity “CN=g_sales,OU=Groups,DC=codelogue,DC=com” -member “CN=test01,OU=Users,DC=codelogue,DC=com” -partition “DC=codelogue,DC=com” -server lds01 コマンドプロンプトを開く C:¥Users¥Administrator¥Desktop> # powershell Set-ExecutionPolicy RemoteSigned # powershell .

Port-forward on Linux

Linuxをルータ化して二つのセグメントを受け渡しする方法。 http://okwave.jp/qa/q7892385.html 上記サイトに載っている内容プラスiptablesを無効化しないとだめ。 なお、各セグメントに接続されている端末にはGATEWAYかスタティックルートをLinuxルータに向けておく必要あり。 http://lists.debian.or.jp/debian-users/200709/msg00166.html