サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
Wikipedia
gendosu.jp
SSOやSAMLといった、主に大、中企業向けのID連携の話になります。 今回はそんななかオープンに実装できそうなSAML認証を実装すべく まずはIDプロバイダーとなるOpenAMという物をDockerで立ち上げてみたいと思います。 準備する物 dockerdocker-composeOpenAMを稼働させるためのドメイン名 ※ローカルでやる場合は、hostsに設定 ※サーバ証明書作成の時にもこのドメイン名を使う OpenAMのDockerイメージですが、今回は https://hub.docker.com/r/vault/openam こちらのイメージを使ってみます。 基本的には、overviewに書かれているとおりやれば起動する。。。。。。。 と思うのですが、このvault/openamのoverviewはちょっと端折りすぎているので手順を順を追って試してみようと思います。 OpenAM
Dockerfileを作っている最中に動作確認中に途中で落ちてしまって、その状態でイメージの中身を確認したい時とかが多々あるかと思いますが 今回はそんなやり方、定番かもしれないですが書いてみようと思います。 まずは適当なDockerfileを作ってビルドします。 docker build --rm -t building . このビルド時にエラーが出てイメージの作成が止まったという想定です。 docker buildで失敗すると・・・ docker imagesには というイメージが出来ています。 こいつは Dockerfile上のタスク(RUNとかADDとかの単位)で正常に処理が完了した状態が一時的にイメージ化されているものです。 で、docker buildで失敗した状態というのは docker ps -aで表示される停止しているコンテナが持っています。 なので、このコンテナに入ること
エンジニアの世界では よく、○○の技術を持っている、経験しているから大丈夫だろう、と言う想定の上で採用活動をする。 だけど、技術を持っている、と言うのは、現在進行形ではない場合もあり、その場合は作業者としては使えるけど、開発チームのリーディングには向かない可能性が高い。 何を言いたいかと言うと、技術の鮮度の問題で 例えば、Rubyであれば、Rubyの最新バージョンが現在2.4で、Railsが5です、と言う時にRuby経験あり。Ruby1.8、Rails2やってました。といった人が来てもある程度は作業は出来るかもしれないけど Railsの2から5になるまでにどんな変更が入っていて、それによってどんなコーディングをしたらいいのかと言うのが理解出来ていないので、採用をしても最新環境をキャッチアップするまである程度時間がかかる。 と言う話と、過去にRailsをやっていて、なんらかの別のプロジェクト
docker便利ですね。 最近そんなことばかりしか言ってない気がします。 自分がdockerを使い始めた頃は、dockerってなんなのかわからない人が多く 話すと便利そうだけどプロダクションで使う想像がつかないとか 環境がめんど臭いとか 色々言われていました。 今現在は、開発環境として使うのであれば docker for macというのがあって、これ入れるだけでかなり簡単にdockerが試せるようになりました。 環境を作るのが簡単になったのであれば、使えるdockerfileとかdocker-compose.ymlとかも そろそろテンプレ的な何かがあった方が良いかな、と思い 今自分の手元でよく使っている構成でdocker-compose.ymlを公開してみます。 まずは、作りたい環境ですが サーバサイドとしてRuby on Railsを使うことが多いので、Ruby on Railsを立ち上
Docker便利ですね。 Docker for macが出てからは、もうmac上には環境を作らない なんて運用も可能じゃないかというくらいです。 実際、サーバサイド系の環境はほぼ全てDockerで運用してます。 gulpとかでブラウザのオートリロードとかしたい場合は さすがに難しいので、そこはmac上に環境を作っておりますが。 ということで、ハードにDocker for macを使っていくと ディスク容量が日々減っていくのが実感出来るかと思います。 これは、Docker for macも実体はVMであり VMのディスクとして仮想ディスクがあり この仮想ディスクが ~/Library/Containers/com.docker.docker/Data/com.docker.driver.amd64-linux に作成されています。 単純に考えると、docker imagesで表示されるイメー
最近、herokuで稼働させているRailsのアプリが「Memory Quota Exceeded」と言われる事が多くなり、定期的にワーカーの再起動をしたいと思ってました。 見る限り、swapも出てしまい、レスポンスも遅くなっているようです。 このような場合、heroku以外だと、unicornを使うので、unicorn_worker_killerを入れるのですが herokuだとpuma推薦なのでpuma使っていました。 で、pumaもuniconのようにworker killer系の物があるのかな?と探してたところ puma_worker_killerがあるようなので、使ってみました。 https://github.com/schneems/puma_worker_killer herokuでの使い方は、「Turn on Rolling Restarts」というのを使うのが推薦のような
概要 consulのevent発行=>event watchの機能をフルに使ったデプロイになります。 event watchで起動されるデプロイツールがstretcherになります。 前提条件 オートスケーリングをする ソースgzとかしてS3においておく 各サーバがS3からソースをダウンロードして展開する(stretcher) オートスケーリングの仕組みは別途あるものとする consulの基本的な設定 webの場合 #/etc/consul.d/web.conf { "service": { "name": "nginx", "service": "nginx", "tags": [ "nginx", "unicorn" ], "port": 80, "check": { "script": "curl http://127.0.0.1:80/ > /dev/null 2>&1", "in
開発環境って、一度作るとあとはそれほどいじらないのでいいんですが 適当に作ったけど適当に社内で公開したい場合にお気軽にデプロイしたい。 Capistrano使ったりするのもいいんだけど…。 それに、小さめのツール類が多いんだけど、毎回nginx立ててポート変えてとかconfでゴニョゴニョして公開するの、面倒。 サクッとデプロイしたら即公開みたいな環境ないかなー。herokuみたいな。 と思って探したらdokkuというのがあったので、触ってみました。 dokkuとは OSSのherokuライクなPaaS実装。 dokkuを入れたサーバに対してgitでプッシュするだけでデプロイ完了します。 バックエンド(MySQLとかRedisとか)はプラグインで対応。 公式 https://github.com/dokku/dokku 調査 まずは手元で動作確認。 vagrantを使っての動作確認をしていき
Atom Editorで、プロジェクト内のファイルが多すぎてキーワード検索をかけると結果が多すぎて、そこからさらに検索かけたくなったりします。 そんな時に、例えばこのディレクトリは除外したい or このディレクトリ内だけ検索したい、なんて感じで条件が指定出来れば随分絞り込めると思います。 やり方は、 FindメニューのFind Project 普段、検索する時は こんな感じで検索画面が開くと思います。 この3段目、検索する場所を絞る設定になっています。 例えば、 lib配下だけを検索したい場合には ここに lib と入れれば良い訳です。 もし、複数の場所から検索したい場合は lib,app,public とすれば、libとappとpublicのディレクトリから検索出来ます。 さらに、例えばpublicの下に無駄に大きいassetsのautocompile結果が同時に格納されていたとして そ
今回の要件 Windowsに複数のバージョンのRubyをインストールする。 バージョンの切り替えを出来るようにする。 ネイティブなgemもインストールしたい。 たとえばnokogiri とか jsonとか ダウンロード ということで、まずは必要なRubyのダウンロード。 以下のページからインストーラをダウンロードします。 http://rubyinstaller.org/downloads/ ※http://ruby-lang.org/からもリンクがあります。 今回はシステム側に2.0.0、切り替え用として1.8.7をインストールします。 なので、ダウンロードページから 2.0.0のインストーラと1.8.7のインストーラをダウンロード。 現時点でダウンロードページにアップされているインストーラは Ruby 2.0.0-p353 (x64) Ruby 1.8.7-p374 続いて、それぞれの
VAIO Pro 11ですが、どうも無線LANが不安定。 症状がちと特殊で 無線LANで接続 + USB3.0でSSDの外付けドライブ接続 という組み合わせですごく不安定 というか、繋がらなくなる。 USB3.0接続の外付けドライブを外すと無線LANが復活したりする。 調べてみても、他の方々はあまりそのような症状が出ていないような感じ。 というか、SSDの外付けを繋いでいるというのが割と特殊なのか この件について、少し調査してみました。 まず、VAIO Pro シリーズでおきまりの設定 ■SVP1121*、SVP1321* 「インテル(R)無線LANドライバーVer.16.0.5.3」アップグレードプログラム http://vcl.vaio.sony.co.jp/download/EP0000302460.html これを入れると、不安定だった接続が安定するということらしい。 入れてみまし
という結果が返ってくる。 なぜか、fieldで指定していないIDが最初に表示され、最後にfieldで指定したレコードが順番に並ぶようだ。 希望としては 4,5,6が最初に表示されて、その後に1,2,3,7…と出てほしい。 これを実現するには select * from users order by field(id, 6,5,4) desc, id; とする
VMWare Player 6がリリースされたようです。 Windows 8に正式に対応し、ストアアプリもユニティメニューから呼び出せるようです。 さて、vmnetcfg.exeを使いたいと言った場合 VMWare Workstationの対応バージョン(VMWare Player 6の場合はVMWare Workstation 10)のインストーラを入手出来る方に限られますが VMWare Workstation 10のインストーラを手動で展開します。 VMware-workstation-full-10.0.0-1295980.exe /e .\ext とコマンドラインで実行します。 これにより、extディレクトリにこのインストーラの中身が展開されます。 このなかから、core.cabファイルを見つけて解凍します。 そこから、vmnetcfg.exeと言うファイルを見つけて、VMWar
これは、Play Framework で使用しているAkkaのデフォルト設定による物で、ボディパーサのタイムアウトが1秒に設定されています。 retrieveBodyParserTimeout = 1 second なので、負荷をかけていって、一つのリクエストが1秒を超えたあたりでタイムアウトのエラーが発生してしまいます。 そこで、Akkaの設定を追加してあげれば良いのですが、どこに追加したら良いかというと 決まりは無い感じですが confの中にあるapplication.confとか akka.confを作ってapplication.confでincludeするかとかです。 今回は適当にapplication.confの一番下に付けちゃいます。 [text]play { akka { event-handlers = ["akka.event.slf4j.Slf4jEventHandle
VMwareの仮想マシンはその仮想マシンが使うディスクを仮想ディスクとしてファイルとして保存されています。 この仮想ディスクのファイルは、VMwarePlayerなどで作った場合、だいたいは最初はごく少量の小さいファイルですが OSをインストールしたり、アプリをインストールしたりすると、それなりに大きなファイルとなってしまいます。 そこで、仮想マシンの中身をダイエットしようと思ってアプリを整理したり圧縮したりしても 仮想ディスクのファイル容量は小さくなっていなかったりします。 これはディスク上でファイルを削除する=ファイルのインデックス情報を削除するというのとイコールで 実体がある部分はクリアしてくれない訳です。 そのおかげで、削除してしまっても、直後であれば復活させるツールが使えたりする訳ですが 仮想マシンでは、そのクリアされない部分があることで、実際仮想マシンの内部で使用している容量よ
Play Framework 2.0系のプロジェクトで、リクエスト毎にログを出力するような設定をした場合、ログファイルをローテートしたくなったりします。 場合によってはlogrotateの設定でやったりもします。 が、今回は、Play Frameworkのログの設定でローテートしてみます。 Play Frameworkは、LogBackというミドルウェアを使用してログを出力します。 で、必要な設定などはすでにPlay Framework自体が設定してくれているので ログを出力するのは [text] Logger.debug("debug ok") [/text] という感じでログが出力出来ます。 ログはデフォルトでは {プロジェクト}/logs/application.log に出力されます。 デフォルトではログファイルはローテートしないので、カスタマイズして見ます。 カスタマイズするには
Play Frameworkはなんか、デフォルトで正常に動いていると、ログが少ないなと思ったりします。 正常に動いたように見えても、データがおかしいのを拾っている場合もあります。 そんな時は、どんなSQLが叩かれているのかと言うのを見たくなります。 Ruby on Railsでは、developmentモードで起動していると常にSQLの実行ログが出たりしますが Play Frameworkでは設定を追加しないと駄目なようです。 設定は application.conf に db関係の設定があると思うのですが その設定と同列の設定で [text]db.default.logStatements=true[/text] というのを1行追加します。 さらに、 [text]# Root logger: logger.root=ERROR[/text] という部分を [text]logger.roo
タイトルの通りです。 最近外出先から家のネットワークに繋がらないなぁと思ったら プロバイダでふさがれたっぽいのです。。 ついでにいうと、DoCoMoのスマホでテザリングして接続ということが出来なかったので それも可能にしたい。 で、IPSecとかも考えましたが SSL-VPNという方式でつないだら楽かも?という事で SoftEther VPNというものを使ってみたいと思います。 このSoftEther VPNというのは、ソフトイーサ株式会社という所が作っている PacketiX VPNというソフトウェアの機能制限したフリーウェア版という事のようです。 で、PacketiX VPNについての詳しい説明は、以下のURLを参照いただきたい。 http://www.softether.co.jp/jp/vpn2/introduction/about_vpn.aspx 簡単にいうと、VPNのサーバ側
文字列の長さを取得 scala> "test" length Int = 4 文字列の繰り返し scala> "abc" * 3 String = abcabcabc ()で、指定位置のcharを取り出す scala> "abcde"(2) Char = c 文字列の比較(<,>,<=,>=) scala> "abc" < "abd" Boolean = true StringBuilderに文字列を追加 scala> val str = "abc" scala> val strbuild = new StringBuilder scala> str.addString(strbuild) 文字列の先頭を大文字に変換 scala> "test".capitalize String = Test 文字列の文字を1文字ずつ処理をする scala> "abcdef".collect {a =>
memcachedの中身を確認したい場合にコマンドラインで叩いて中身を参照するには まず、memcachedにtelnetで接続する telnet localhost 11211 すると、 Trying 127.0.0.1... Connected to localhost. Escape character is '^]'. とでて、接続が確立したします。 次に、memcachedに登録されているデータの一覧を取得…の前に memcachedは、データをslabという領域に分けて保存しています。 なので、コマンド一発でキーバリューの一覧を取得することは出来ません。 なので、まずはこのslabの一覧を取得します。 $> stats items STAT items:13:number 1 STAT items:13:age 23763 STAT items:13:evicted 0 STA
前々回くらいで、【Scala】LiftでMySQLに繋ぐ(Maven編)では、MavenでMySQLにつなぐための設定をしたが、今回はsbtでMySQLにつなぐための設定を。 project/build/LiftProject.scalaファイルに、MySQLのドライバの設定を追加します。 [scala]override def libraryDependencies = Set( "net.liftweb" %% "lift-webkit" % liftVersion.value.toString % "compile", "net.liftweb" %% "lift-mapper" % liftVersion.value.toString % "compile", "org.mortbay.jetty" % "jetty" % "6.1.26" % "test", "junit" %
MySQLに接続するように設定したPlay frameworkのアプリケーションで [error] c.j.b.ConnectionHandle - Database access problem. Killing off all remaining connections in the connection pool. SQL State = 08S01 [error] application - ! @6ai2nh1a8 - Internal server error, for request [GET /salons?page=2] -> play.core.ActionInvoker$$anonfun$receive$1$$anon$1: Execution exception [[SQLException: Timed out waiting for a free availab
explzhのアーカイバDLLの自動アップデートでは どうもtarの64bit版はリストに含まれていないようで、tarファイルを解凍しようとするとtar64.dllを入れろと出てきます。 この場合、SuperASF の作者様のサイトよりダウンロード可能なtar64.dllをインストールすることでtar解凍ができるようになります。 tar64.dllをインストールするには 上記サイトよりtar64.dllをダウンロード後解凍し tar64.dll、tar64.libの二つをc:\windows\system32へコピーします。 以上でtar解凍が出来るようになると思います。
Scalaの開発をVMで行っているわけでありますが 素のPlay frameworkだと、色々やってるうちにメモリを浪費してしまうようです。 メモリリークでは無いけど、必要なメモリをどんどん確保してしまうみたい。 なので、ヒープの上限という意味で割り当てを指定してみます。 毎回Play起動時に指定するのは面倒なので、環境変数で。 #~/.bashrc を開いて、一番下あたりに export _JAVA_OPTIONS="-Xms256M -Xmx256M" と書き込んでターミナルを再起動します。 以上です。 playを起動すると Picked up _JAVA_OPTIONS: -Xms256M -Xmx256M という行がコンソールに出てきたと思います。
application.confには前環境で共通の内容を設定 prod.confには、本番環境用のみのものを設定 という感じで、本番と開発で設定を分けたいなと思います。 これを実現するには 起動時のパラメータに以下のような設定を追加することで実現出来ます。 [text]config.resource=prod.conf[/text] このconfig.resourceというのは、Play プロジェクト内のリソースとしてのprod.confを読み込みます、という設定なので、 confディレクトリに格納しておく必要があります。 confディレクトリに捕らわれずに別の場所に置きたいという場合は config.fileにすればフルパスで設定することが出来ます。
View BoundとContext Boundとは 「頻出する暗黙(implicit)変換・パラメータの利用方法」のシンタックスシュガー implicitとは scala> implicit val a:Int = 1 scala> implicit val s:String = "a" scala> def some(implicit v:Int) : Int = v scala> some res0: Int = 1 def some[Int](implicit v:Int) : Int = v def some[String](implicit v:String) : String = v scala> some[Int] res1: Int = 1 scala> some[String] res2: String = a View Boundとは def f1[T](implic
Scala and LiftのプロジェクトをEclipse上に作成する なんか、単純なようですが、うまくいかなかったので、うまくいく方法を書いておく。 Eclipseの新規作成で、Scala ProjectではScalaのプロジェクトしか作成されません。 Liftのプロジェクトを作りたいときは Maven Projectを選択 archetypeを選択 プロジェクト名などを設定 とすると、プロジェクトが作成されますが どうも、ビルダーがjavaのままでエラー出まくりだったりするので、プロジェクトファイルを編集します。。 やりたくない。。 Close Projectでいったんプロジェクトをクローズします。 <buildCommand> <name>org.eclipse.jdt.core.javabuilder</name> <arguments> </arguments> </buildC
モジュールがインクルードされているか it "should include AuthenticatedSystem" do controller.class.included_modules.should include(AuthenticatedSystem) end 隠したいパラメータがフィルターされているか it "should filter credit_cards" do controller.send(:filter_parameters, 'credit_card' => 'nogood')\ ['credit_card'].should == '[FILTERED]' end Before filters it "should have a before_filter for login_required" do controller.class.before_filter
前の記事で、Scala IDEのインストールについては書きました。 その上で、sbtでパッケージ管理をしたいといった場合の方法です。 sbtのbuild.sbtなどで依存パッケージを定義した場合など、eclipseのビルドパスに反映されません。 そーいう時は、 sbteclipse というプラグインを使います。 githubはこちら このプラグインは、sbtで定義した依存関係をもとに、eclipseのビルドパスを設定してくれるという物です。 また、sbteclipseはsbt 0.11.2以降で使用できます。 このプラグインのインストールは ~/.sbt/pluginsにplugin.sbtファイルを作り、 addSbtPlugin("com.typesafe.sbteclipse" % "sbteclipse-plugin" % "2.0.0") と書き加えます。 続いて、実験用のプロジ
次のページ
このページを最初にブックマークしてみませんか?
『GENDOSU@NET』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く