プログラム

テキストファイルに列挙されているURLを利用して該当サイトのトップページHTMLをwgetで保存する

メモ用エントリ。 http://hideack.hatenablog.com/ http://www.remp.jp/ http://www.storyboards.jp/ の様なURLが列挙されたテキストファイルが手元にあったときに wget を利用してトップページのHTMLファイルを特定のディレクトリに保存することをしたいと…

readlineで標準入力を受け付ける(対話型シェル)

Node.jsで書いたコマンドラインツールに対話型のシェルを設けたかったので試してみた。 (参照にしたgistほぼそのままなのだけれども) アロー関数で書き直そうとしたのだけれども詰まったので一旦メモとして残しておく。 var readline = require('readline');…

synapticを使ってXORをニューラルネットワークで再現する

ニューラルネットワーク自作入門を読んでいてサンプルはPythonで書かれているのだけれども、Nodeで書けないかなと思って調べてみたらsynapticというnpmがあったので本で読んだことを踏まえつつXOR(排他的論理和)を再現してみることにした。 www.npmjs.com XO…

Grenacheを利用してマイクロサービスを管理&呼び出ししてみる

BITFINEXというビットコイントレードのプラットフォームを提供している会社がGrenacheというマイクロサービスを管理するフレームワークを提供しているので少し触ってみた。 例によってサンプルプログラム、ほぼそのままなのだけど多少咀嚼した(つもり)。 Gre…

package.jsonでnpm runさせるときに記載するパスについて

package.json 中に scripts を定義してその下に実行させたいスクリプトを指定するとnpm run で実行できる。 例えば、 { "name": "foobar", (snip) "scripts": { "lint": "eslint lib/*.js bin/*", "test": "npm run lint && mocha --require ./test/helper.j…

鶏そぼろの作り方, slack-cli-stream - 徒然日記

鶏そぼろ 晩御飯にそぼろご飯作る。鶏そぼろと卵そぼろを作って好きなだけお茶碗によそいだご飯にかけて食べる方式。雑に以下の様なレシピ。 鶏肉ミンチ 200g 醤油 大さじ2 砂糖 大さじ1.5〜2 みりん 大さじ1 水 1/4カップ 作り方は意外と簡単で上の材料一式…

SlackのReal Time Messaging APIで得られる情報を眺める

自身のSlackアカウントが受領している情報を1箇所に集めてナニカできるかなと思ったとき、まず雑に情報だけ取得してみようと思い試してみた。 github.com というのがあってnpmでも公開されているのでnpm installする。 $ npm install --save @slack/client …

Wordpressのプラグイン中で外部API等へヘッダにAuthorization入れたHTTPリクエストする

Wordpressで独自のプラグインを作成しているときに、そのプラグイン中から外部のAPIなどにHTTPリクエストをする際にWordpressでは以下の様なHTTP APIのヘルパー関数が用意されているのでリクエストを発行できる。 例えばGETリクエストであれば、 wp_remote_g…

Google docsのスプレッドシートに特定フィードの更新内容を追記する

業務でふと必要になって時々似た様なGoogle App Script書いているのですが、毎回書き始めるときに「えーっと、どうだったかな」となることが2回続いたのでエントリとして追加。 以下の様な形で書いてみた。そんなに大したことはやっていないのだけれども少し…

sepiaを利用したテスト中で一時的に機能を無効化する

Node.js向けのwebmockの作成を楽にしてくれるライブラリにsepiaがあります。RubyのVCRみたく一度テストで利用する通信内容を記録してモック化され、2回目以降の通信はそのモックを介して行われる様になるというものです。 github.com sepiaを基本的に使う様…

LINE Notifyで天気を通知させる

LINE Notifyが公開されて少し触ってみたけれどとてもシンプルにLINEで通知を実装することができたので完全に個人用便利ツールとなりつつevacで天気通知させられる様にoutputとして実装してみた。 実装といってもとてもシンプルでAPIにLINE Notify上で取得さ…

nroongaを使ってデータストアして全文検索するまで

昨日の続き。 繰り返しになるが、解決したい課題と現状は、 数ギガサイズのアクセスログがある 上記に対して数万パターンの文字列それぞれが何回出現するかを数え上げたい という状況。なので、このログファイルをngroongaを介してgroongaのデータベースを新…

google-search-rankというnpmを作った

以前紹介した google-search_rank | RubyGems.org | your community gem host のインスパイア。 再発明感あるけどGoogleのCustom search APIを操作するgoogle-searchというクライアントを使って任意の条件で検索をかけて検索順位を取っている。 該当APIで取…

FIFOの作り方を考える

FIFO(First In, First Out) を利用したときにソフトウェアだとArrayにメソッドとして実装されていたり、またKVSに実装されていたりして、あまり中身意識をすることが無いかもしれないけど、定期的に振り返って実装を考えると頭の体操になって楽しい。といっ…

npmのtunnel-sshを利用してSSHポートフォワーディングする

SSHでポートフォワードするのをNode.jsだけで行うことを試してみたのでその際のメモ。 下の例では、local(127.0.0.1)の13306番にアクセスするとSSH接続先のホストから接続できる mysql***.heteml.jp の3306番にフォワードしている。 npmで公開されている tun…

greenkeeper.io を利用してプロジェクトが依存するnpmを最新の状態で保つ

プロジェクトで依存しているnpmを最新に保つのにgreenkeeperというサービスを見つけたので試してみました。 まずはcliツールをインストール。このサービスのカッコイイのがOAuthの部分を除いてコマンドラインで完了するというところ。 $ npm install -g gree…

過去作成したloopbackアプリのloopback-component-explorerへの対応

過去に作成したloopbackアプリの場合、slcコマンドでscafoldすると loopback-explorer と呼ばれるloopbackで作成したAPIをCRUDするUIが含まれた形でアプリが作成されますが、今回この loopback-explorer に大きな変更が加えられて単純に npm update するとア…

slack-winstonでログをSlack通知する

Node.js でloopbackを使ってAPIを書くことをここ最近ずっとしていて、winstonでアプリケーションのログを取る様にする際にした際、ついでに一定レベル以上のログ(エラーログ)の場合は内容をSlackにも通知できないかなと調べると由ななwinstonのプラグイン…

blanketでmochaで書いたテストのカバレッジを測定する

mochaで書いたテストのカバレッジ(網羅率)を取るにはどうしたらよいのかと思っていたところ、blanketというのを見つけたので試してみました。 早速、blanketとmochaでテストを走らせた際にカバレッジを表示させられる様にするためのレポーターを追加します。…

Google docsのスプレッドシート上に記載されたURLのいいね数を取得する

Google docsネタ第2弾 エントリ。 仕事でGoogle docsにメモられたURLにつけられたfacebookのいいね数をとりたいなと思ったので、以下の様なスクリプトをgoogle docsで作成して解決。 スプレッドシートの「ツール>スクリプトエディタ」で空のプロジェクトを…

loopback-testingを利用してloopbackで作成したAPIのテストを書く

loopbackでAPIのテストを書く際にloopback-testingを利用してAPIのテストを書いてみたのでその際のメモ。 まずは必要なnpmパッケージをloopbackアプリケーションに導入します。loopbackアプリのルートで以下のnpmコマンドを実行。 loopback-testingwww.npmjs…

loopbackで作成されたAPIのアクセスコントロールを設定する

の様なモデルのリレーションを定義し、APIも自動的に作成され /rempusers/:id/libraries といった形でアクセスできる様に なったのですが、ログインして得られるアクセストークンを付与しても現状だと401応答が帰って来ます。 $ http http://localhost:5000/…

loopbackでモデルのrelationを定義する

loopbackでモデルを作成するときslcコマンドで作成できるのだけど、 モデル間のリレーションを同様にscafoldするやり方のメモです。 ここでは1対多となるモデルのリレーションの定義をslcコマンドで行ってみます。 例としてRempUserというユーザが複数のプレ…

loopbackでAPIにアクセスした際のACLの適用状況を確認する

loopbackで作成したAPIには、ユーザのロールに応じてアクセスコントロールを指定することができます。 Controlling data access - LoopBack - Documentation 例えば、 adminユーザのみアクセス可 このロールのユーザのみアクセス可 認証済のユーザであればア…

loopbackでMongoDBを利用する

loopbackでアプリケーションを作成した直後はデータストレージにmemoryが設定されているため、そのままだとアプリケーションが再起動するたびにmodelの内容が初期化されてしまうため、保管できる様にMongoDB*1を利用できる様にします。 作成したアプリケーシ…

Node Foremanで複数のプロセスを同時に起動する

Rubyで開発している時に開発環境で複数のプロセスをまとめて起動させたいときにforemanを 利用することが多いですがNode.jsの実装でNode Foremanがあります。 foremanwww.npmjs.com npmコマンドでNode Foremanをインストールします。 $ npm install -g forem…

loopbackでアプリケーションを作成してユーザ登録APIを作るまで

StrongLoopが開発したloopbackは、Node.jsで作られたフレームワーク(所謂mBaaSのオープンソース実装)で以下の様な特徴があります。 RESTなAPIをモデルと対応させて素早く作れる (モデルを作るとCRUDするAPIが出来上がる) モデルはコネクタを介して様々なDBで…

RunscopeでAPIの応答を監視する

Runscopeとは Runscopeは2013年にローンチしされたAPI監視サービスです。 Runscopewww.runscope.com メリットとしては、"本番環境で提供しているAPIのステータス監視及び応答内容監視ができる" があります。 単純な死活監視ではなく、APIが返答するJSONやXML…

nconfでYAMLファイルを扱える様にする

evacでは、アグリゲータとしての挙動をJSONファイルで定義する様にしていて、その内容の解釈にnconfを利用しているのだけど、YAMLもフォーマットとしてサポートさせたいので試してみたのでその際のメモ。 nconf自体はパーサーを外部に指定できる仕組みがある…

node.jsでGoogle analyticsレポートの値を取得する

Google analyticsのレポートの値を取得する方法をあれこれ調べていたのでひと通りまとめてみました。 npmのパッケージとしては、sfarthin/ga-analytics · GitHubというのがあるので、これを利用するとあっさりレポートの値は取れるのですが、Google analytic…