YouTubeでお気に入りに入れた動画のタイトルを一覧化して見たくなったので、 YouTube Data API経由でデータを取得して表示するNode.jsスクリプトを作ってみた。 APIへのアクセス自体はサクッとできたのだけど、 複数ページデータを非同期で取得するフローのコントロールで苦労した。 Node.jsスクリプトを書く時は毎回このフローコントロールでつまづくのだけど、 慣れの問題なのだろうか。 今回はcaolan/asyncライブラリのおかげで何とか解決できた感じ。 async - Documentation 作成したスクリプトの内容を紹介しつつ、 非同期処理を不特定回数実行する際のパターンについて考えてみよう。 YouTubeのAPIにアクセスする準備 今回のスクリプトはYouTubeのAPIを利用するため、 Googleのデベロッパーサイトでアプリケーション登録が必要となる。
そろそろNode.jsスクリプト作成にも慣れてきたので、 簡単なWebアプリ作成に挑戦してみた。 Meteor、MEAN.js、Sails.jsなど色々あって迷ったけど、 まずはシンプルにExpressを使ってみる。 MongoDBコレクションに保存された情報を Webページ上に一覧表示するスクリプトを、 Node.js+Express+MongoDBで作成した。 テンプレートには以前利用したことのあるEctを使う。 時間フォーマットにはMomentを使い、 デーモン化にはPM2を使った。 Moment本家サイト: Moment.js | Home ECTテンプレートエンジン本家サイト: ectjs.com PM2のGithubページ: github.com 作成の流れ プロジェクトの初期化処理: $ npm init $ npm install express --save-dev $
サーバが重いけどどこを直せばよいか分からないから調査してくれー、と Tomcatのでかいアクセスログファイルを渡されたので、 とりあえずデータベースに入れて調査してみるべ、と ログファイルの内容ををデータベースに取り込むスクリプトを書いてみた。 Node.jsのStreamを全然理解してなかったので、よい勉強になった。 取り込みスクリプトを作成する ログファイルは各行が下記のようなフォーマットになっているとする: <IPアドレス> - - [<アクセス日時>] "<HTTPメソッド名> <リクエストURL> <HTTPプロトコルバージョン>" <ステータスコード> <コンテンツ長> これを下記のようなテーブルに取り込むとする。(PostgreSQL) HTTPプロトコルバージョン以外を取り込む想定。 CREATE TABLE tomcat_access_logs( id serial no
Javascriptライブラリの中でも、 Underscore.jsが大変気に入っている。 Underscore.js each、filter、map、reduce等 リスト操作、マップ操作関連の関数が 100以上含まれたユーティリティライブラリで、 他の言語にあってJavascriptにもあったらいいのにな、 と思うようなものをいい具合に用意してくれている。 作業効率化のための一括処理には欠かせないライブラリだ。 今回はUnderscore.jsに含まれるcountBy関数を使って 文字別出現回数取得関数を作ってみる。 charCounter関数を作る 文字の出現回数が分かって嬉しい状況というのが果たしてどれほどあるのか、 ちょっと疑問はあるが 誰かの役に立つことを祈って書いてみる。 charCounterという名前で関数を作成する。 var _ = require("underscor
どうせ自動化するなら完全自動化したいよね、 ということで今回は作成したGruntスクリプトを Windowsの起動時や毎日の決まった時間に実行できるように タスクスケジューラに登録する方法を紹介する。 この記事はGruntを実行する環境が整っていることを前提としているので、 未インストールの方は下記の記事を参考にしていただきたい: blog.honjala.net タスクスケジューラの基本的な使い方は下記のページに 詳しく掲載されている: https://121ware.com/qasearch/1007/app/servlet/relatedqa?QID=015385 タスクスケジューラはパスさえ指定すれば色々な プログラムを実行してくれるのだけど、 Gruntスクリプトを実行する場合はちょっと工夫する必要がある。 サンプルとして、下記のような 始業時間をチャットワークに通知する簡単なG
先日iPad miniとiPhone 6sを導入してから、 うちの古いルーターが2日間隔くらいで再起動しないと 通信が遅くなってネットに繋がらなくなるようになった。 どうやら新しいiPadとiPhoneはWi-fi環境だとガシガシ通信するようで、 ルーターのキャパをすぐに超えてしまうみたいだ。 ルーターを新しくすればすぐに解決しそうな話だが、 とりあえず1日1回再起動すれば快適に使えるようなので、 ルーターを再起動するスクリプトを書いてみた。 幸いうちのルーターはWebブラウザで操作できる管理画面を持っており、 BASIC認証でログインして特定のURLを叩くと再起動できるので、 httpアクセスするスクリプトを書いて毎晩実行されるように 定期処理の設定をしておけば自動化できそうだ。 ついでに、ちゃんと定期処理が実行されてるか確認できるように 再起動前に「これから再起動しますよ」という通知を
コミュニケーションというのはなかなか難しいもので、 「急いで確認したいから資料ができたら共有フォルダに入れて、すぐ連絡してよ」 と強めに伝えても、 資料はとっくにできてるのに やれ後で連絡するつもりだっただの、 もうちょっと確認してから連絡するつもりだっただの、 今メール書いてただので、 一本内線をくれるだけで良いのになかなか連絡がもらえないことがある。 そんなストレスフルな行き違いは 「このやろう!」と毎回怒りを爆発させるよりも ツールを使って解決の仕組みを用意してしまうに限る。 ということで今回は指定したフォルダを監視して、 ファイルが追加されたり更新されたりしたら 自動で通知してくれるスクリプトをつくってみたい。 以前別の記事で紹介したNode.jsのタスクランナー、Gruntを使えば 割と簡単にファイル監視ツールを作ることができる。 blog.honjala.net 「grunt-
前回書いたNode.js入門記事の続き。 blog.honjala.net 前回から引き続き、 いかにプログラムの勉強無しで自動化できることを増やすか、 もとい、 いかに他部署のノンプログラマに自動化ツールを使わせて自分への作業依頼を減らすか、 をマイテーマに少しずつ情報をまとめていく。 Node.jsを紹介しただけでは、「Javascript…難しそう。いつかやるわ。」 となりそうなので、 今回はプログラミング要素最小限で使えるGruntを紹介する! Gruntとは Grunt: The JavaScript Task Runner Node.js上で動く、タスクランナーとかビルドツールとか呼ばれるもので、 Gruntfileと呼ばれるファイルに実行したいこと(タスク)を書いておき、 コマンドを実行すると指定したタスクを実行してくれる。 Javascriptでプログラムを書くのと何がちが
これまでいくつかの記事でNode.jsを使ったスクリプトを載せてきたが、 自動化のためのスクリプトを書いて動かす環境として Node.jsは手軽だし速いし色々ライブラリは揃ってきているし なかなか良い環境だと感じている。 Web系の仕事をしていればJavascriptはある程度親しみのある言語だろうし、 GruntやGulpのようなWeb関連作業を自動化する 機能満載のタスクランナーまで用意されている。 実行環境もインストーラをダウンロードしてインストールすれば パッケージ管理ツール付きで入手することができるので、 すぐに開発を始めることができる。 非同期処理が得意なサーバアプリケーションを作るための環境として 紹介されることが多いけど、この手軽に導入できて Javascriptでサクッとアプリが作れるところだけでも十分に価値があると思う。 ノンプログラマが仕事を効率化するためにプログラミ
ある開発プロジェクトで、 非技術系のメンバーにも進捗を知っておいてもらいたいものの、 「お前らSubversion入れろ」とか「リポジトリログを見ろ」といっても見そうになく、 いちいち伝えるのも面倒大変そうだったので、 Subversionにコミットがあったらメッセージ内容がリアルタイムで チャットワークに流れる仕組みを作ってやった。 www.chatwork.com チャットワークはチーム間でのやりとりに使っていたので、ここに流してやろうというわけだ。 チャットワークはプレビュー版ながらAPIを公開してくれているので、 developer.chatwork.com API経由でメッセージ投稿を行うスクリプトと、 Subversionのフック機能を組み合わせることで実現することができた。 Node.jsでチャットワークのAPIにアクセスするスクリプトを作成する 今回はNode.jsでスクリ
とあるWeb開発プロジェクトで WBS(Excel製)に書かれた、機能ごとの開発担当・開始日・期日・予定工数を そのままRedmineのチケットとして登録するという、 手作業でやったらえらく時間のかかりそうな作業があったので、 RedmineのAPI経由でチケットを一括登録できるスクリプトを作成した。 前回Bit.ly APIにアクセスするスクリプトを作って結構楽しかったので、 今回もNode.jsで作成してみる。 blog.honjala.net RedmineのAPIは、管理者権限を持ったユーザーで 許可すれば、あとはユーザーごとにAPIキーを発行して REST APIが使えるようになっている。 今回のようにチケットを登録するだけでなく、 ユーザー情報を取得するようなAPIも用意されているようなので、 進捗を分析したい時なんかに使えそうだ。 APIの詳細は下記の本家サイトが詳しい: w
JavaScript Advent Calendar 2011 (Node.js/WebSocketsコース) : ATNDも皆さんのご協力で25日間終わり、無事新しい年が迎えられそうです。参加された方、ご苦労様でした。もしアドカレに穴が空きそうだったら書いてみようと思ってたネタを作っていましたので、アドカレ終了記念の番外編で書いてみます。 ちょっと前のブログになりますが、Node.js Module – exports vs module.exportsな記事が掲載されていました。 Node.js のモジュールを作成する際に使用する exports 変数と module.exports 変数の違いについての記事です。私も以前から「 module や exports って変数はいったい何だろう?」とか、「require()関数って突然どこから現れてくるのだろうか?」など実際その仕組みはどう
Meteorとは? Meteorは、2012年4月に彗星のように登場した、新たなアプリケーションプラットフォームです。この原稿の執筆時で、バージョンは0.3.6とされており、まだまだプレビュー版の域は超えていません。また、現状ではUNIX環境(MacOS Xを含む)でしかうまく動作しないようです。 しかし、Webアプリケーション開発をとことんまで素早く、楽に行えるようにするためのさまざまな仕組みが盛り込まれていることから、登場直後からかなりの注目を集めています(公式サイトには、「1日か2日でプロトタイプを、2~3週間で製品レベルのアプリを構築できるようにする」とあります)。 MeteorはMITライセンスに基づくオープンソースプロジェクトとして、Github上で公開されています。現在4人の開発者がフルタイムで開発に従事しており、1年以内に1.0をリリースする予定だとされています。 M
Run JavaScript EverywhereNode.js® is a free, open-source, cross-platform JavaScript runtime environment that lets developers create servers, web apps, command line tools and scripts. Download Node.js (LTS)Download Node.js (LTS)Downloads Node.js v22.16.01 with long-term support. Node.js can also be installed via version managers.Want new features sooner? Get Node.js v24.1.01 instead. // server.mjs
こんにちは。毎年花粉症になりかけている飯塚です。 最近のNode.jsの普及などによってサーバサイドJavaScript界隈が盛り上がっています。 そんなホットなJavaScriptをラクにかつエレガントに書くためのCoffeeScriptという言語をチュートリアル風に紹介します。 何かしらのライブラリを自分で書く程度にJavaScriptで開発している人は絶対に使ったほうがいいと思います。 JavaScriptを知っていれば1-2時間程度で十分駆使できるようになります。 (2011/6/28:@m_satyr様にご指摘頂いた箇所を修正しました。) 目次 CoffeeScriptとは? インストール Hello World 構文 関数 変数展開 Objectの生成 ループ 存在チェック ヒアドキュメント thisのバインド クラス 無名関数 {var} Tips ?の使い分け 存在チェック
ご挨拶 こんにちは、ロンドンのNew Bambooという会社でWebエンジニアとして働いている@makoto_inoueです。ここのところ、PusherというWebSocketのクラウドサービスの開発に関わっています。今回から3回に渡ってWebSocketに関する短期連載を担当させていただきます。 私を含めたNew Bambooの面々(我々は自分たちのことをBambinoと呼んでいます)がWebSocketになぜ興味を持ったかということからはじまり、実際にクラウドサービスを始めるまでにいたったストーリーをお話ししたいと思います。そのストーリーを通じて、WebSocketが切り開く「リアルタイムWeb」な世界への可能性や技術的課題を皆さんと共有できればと思っています。
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く