はじめに DIコンテナ自体は特に目新しい技術ではありません。JavaScript界隈ではAngularJS 1.xやRequireJS(AMD)等はそれ自体がDIの仕組みを内包したライブラリです。 しかし、これらのDIは若干無理やりな実装方法を取っていた感があります12。これはJavaScriptでメタデータやAOPを適切に扱う機能が不足していたことが背景にあると考えているのですが、ここ1, 2年で言語側の状況も変化してきています。 具体的にはTypeScript 1.5からDecoratorsがサポートされたり、ES 2015にてリフレクションの仕様が追加されたりと、よりスマートなDIコンテナを実装するための基盤が整いつつあります。 そこで今日はInversifyJSという軽量JavaScript DIコンテナについて触れるとともに、最新のDI事情を見ていきたいと思います。 Invers
DIはダイジだーDIコンテナはベンリだーとかは色々聴いていたのですが、DIもDIコンテナも何もわかっていないので勉強してみようと思い少し試してみたのでメモ。 まずはDI編。 DIとは Dependency Injectionです。 依存性の注入です。 ...?(´・ω・`) 依存性?(´・ω・)注入?(´・ω・)っていう感じなのでもう少し詳しく深掘ってみます。 依存性とは 「クラスAを正しく動かすためには、クラスBが既に出来上がってないとだめ」という状態を、「クラスAはクラスBに依存している」といいます。 例を示します。(もろもろ言うことはあれどとりあえず依存している事がわかる実装になっていればよしとします) <?php class Song { public function __construct($title=null) { $this->title = $title; } publ
こんにちは、王です。 みなさん、「RxJS」をご存知でしょうか? すごく大雑把に言うと、RxJSとは非同期処理(マウスクリックなどのイベントベースの処理も含める)をするときに超絶便利なライブラリです! イメージしやすいように「便利」とは言いましたが、決して「便利」という言葉ではおさまらないくらいのインパクトがあると思います。ちょっとした「イノベーション」に近い感覚です。 今回は、RxJSを全く知らない初心者でもとっつきやすいように説明してみたいと思います。少し記事が長くなりますが、最後までお読みいただければ幸いです! 目次 ReactiveXについて 非同期処理の問題点 RXと「Observerパターン」 ウォーミングアップ イベントを配列のように操る? Stream(ストリーム) ストリームを操作する「オペレーター」 オペレーションチェーン ObserverとObservable Col
いろいろ把握しないまま頑張ってHello Worldを作ったのでメモ。参考にしたのは、Angular2のチュートリアルと、React+TypeScriptのチュートリアル 出来上がったものは、js-study/react-hello-worldに置いておきました。 package.json 最初に作ったのは、package.json。Angular2のチュートリアル見てたら、scriptのところ使ってて、良さそうだったので取り入れた。tscは後で書くけどTypeScriptのコンパイルツール。 concurrentlyは、複数のコマンドを非同期で実行できるパッケージらしい。今回は、tscのwatchとローカルサーバーのlite-serverを同時に動かしている。concurrentlyは引数も取れて便利ぽい。 reactとreact-domを入れた。これがないとReactが書けないようだっ
HTTP access control (CORS) issues Swagger Editor is a web application and by its nature is limited to HTTP access control policy . If you can't make calls using Try this operation component of the editor it's very likely because the server is not allowing the swagger.io domain to make XHR (also known as AJAX) calls to it. How to fix CORS issues There are multiple ways of fixing the CORS issue in S
追記 注意 サンプルコードなので省いていますがコードではawaitとしてPromiseのコールバックを隠ぺいしています。 実際にはPromiseがresolveではなくrejectを返すこともあるので、実際のコードではtry-catchを使ってちゃんとエラーを捕捉しましょう。
Protractor + mocha + power-assert + TypeScriptを用いてOnsenUIで作成したサイトのE2EテストTypeScriptmochapower-assertProtractoronsenui 概要 『こういったサイトを作ってみたかったんだよ!』 OnsenUIでスマホアプリみたいなサイトを作ってみる より http://qiita.com/igara/items/92d0b58c4df21141429a サイトでもアプリのように動きのあるものを扱っていたとき、 これどうやってテストコード化できるのだろうと疑問に思ったため やってみたという記事です。 ソースは下記のレポジトリにあります。 https://github.com/igara/syonet/ 使ってみたもの Protractor WebDriverとテストフレームワークを繋げてブラウザベー
2017/01/17追記 Herokuのプランが変更されたようです。 詳しくは、コメント欄を参照してください。 追記ここまで みなさん、bot活用していますか? どんどん便利なスクリプトを追加し、日々の業務や生活になくなてはならない存在になっていると思います。しかしながら、botをどこで運用するかという悩ましい問題があります。少し前ならheroku一択でしたが、herokuのプランが変更され24時間完全に無料で運用することが難しくなりました。 herokuで運用する問題点 herokuは素晴らしい環境です。が、無料でbotをつくるとなると話は少し変わってきます。 30分アクセスしなければスリープ 24時間連続で動かすことができない(6時間のスリープ) hubot-heroku-keepaliveによって30分のスリープの問題はいいですが、24時間稼働できないのはどうしようもありません。まあ
昔 selenium IDEでテストを書いて以来のseleniumですが、とある場面で使いたくなったのでその時のメモになります。 一番初めは Capybara + rspec + selenium で書こうと思ったいたのですが、自分の書き方が悪いのかどうしてもseleniumのsessionがテストを実行するたびにクリアされてしまいログインのテストができなかった。。。。。。 そこでごにょごにょググっていたら webdriverioってやつのオプションを使うとセッションが引き回すことができそうなので試してみました。 環境 mac OSX Yosemite (10.10.3) 参考にしたサイト webdriver.io webdriverio/webdriverio 事前準備に必要なもの NodeJS nodebrew 経由でよければ OSXでnodebrewインストールメモ を読んでNode
Google BigQueryはクエリで処理したデータ量だけ課金される。テーブルが大きくなれば大きくなるほど課金されてしまうのである。これではログを1つのテーブルに大量に挿入していると困ったことになってしまうように見える。 Google BigQueryでは、このような追記型のテーブルに対して、テーブルのサブセットを利用することで、クエリにかかるコストを削減できるTable Decoratorという機能がある。 Table Decorators - Google BigQuery - Google Developers この記事は上記記事の抄訳となる。 Table Decoratorを利用する 通常、BigQueryにはクエリ実行時に全てのカラムをスキャンする。Table Decoratorを使用することで、データのサブセットに対し、費用効果の高いクエリを実行できる。Table Decor
あけましておめでとうございます。データサイエンティストの金田です。現在 iQON では、データ分析の基盤として BigQuery を利用しており、データ分析や計算負荷の高いバッチ処理等に活用しています。しかしながら、通常のデータベースとは若干異なる点があり、効率的な運用ができるまでに様々な試行錯誤がありました。今回はそれらの試行錯誤によって得られた知見をベストプラクティスとして紹介したいと思います。 ログデータのテーブル名に日付を入れる BigQuery でログを保存する場合は、テーブル名の最後に yyyymmdd 形式で日付を入れることをお勧めします。理由は二つあり、1つ目はスキャン対象となるデータ量を抑えられるため、2つ目が Web UI でのテーブル管理が容易になるためです。 処理データ量の抑制 まず、スキャンするデータ量を抑えられるという点ですが、BigQuery ではクエリを発行
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く