package.jsonをどう書けばいいのかよくわからない・・・。jade, coffee-script, stylusだけをgitで管理し、gruntでビルドしたjs, css, bower_componentsとかは、gitで管理する必要がない。流れ的には下記の通り。 jade, stylus, coffee-scriptで開発。 gruntで更新ファイルを監視し、jadeはcopy、stylusはcssへ、coffee-scriptはjsへ。 gitで管理するのは、1.のファイルたち。 Herokuへdeploy。 gruntが実行して、1.のファイルたちが2.になってサーバーが動く。 この流れに行き着くまでに色々理由がある。 coffeeファイルでNode.jsを動かしてもいいが、syntaxerrorが事前にわかりにくい。 → grunt-coffeelintで文法チェックをする → 文法チェックしても動くかどうかはわからない。 → やっぱりjsファイルにしてから動作確認したい。 grunt-autoprefixerを使えば、-webkit, -mozなどを書かなくても保管してくれる。 → stylusには効かない。 → stylusからcssに変換してからautoprefixerを掛ける。 Herokuへdeployするにはgitで管理しているファイルに限る。 → gruntで書きだしたファイルをgitで管理する?いやそれはない。 → gruntで書きだす前のファイルをgitで管理しないと意味がない。 Herokuへdeployする時にgruntを動かしたい。 → 方法としては、package.jsonのscriptにpostinstallを追記する。 → または、Herokuが提供しているbuildpackを使ってgruntを叩くようにheroku configで設定をする。 4.の項目に関して、具体的なpackage.jsonは下記の通り。 package.json 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20

続きを読む

投稿が半年も抜けちゃいました・・・。いかんですね。皆さまお元気でしたでしょうか? サイトのドメインを決める際に「www」をつけるかつけないか、少しは考えることがあると思います。今回は、Node.jsで「www」の有り無しで正しくリダイレクトさせる方法をご紹介します。 app.configureの直下に書きます。index.htmlにあたる、app.get ‘/‘以降に書いてしまうと、こちらが先に有効になってしまいますので、app.get群の一番最初に書きましょう。 wwwなしでアクセスがあった時に、wwwありにリダイレクトさせる方法 coffee 1 2 3 4 5 6 7 8 app.get '/*', (req, res, next) -> # req.headresの中にwwwが含まれていれば、 if req.headers.host.match(/^www/) is null # wwwをつけた状態でリダイレクトします。 res.redirect 'http://www.' + req.url else # それ以外は次へ進みます。 next() 記述自体はとても簡単です。よくあるWEBサーバーソフトウェアのApacheですと、.htaccsessに書いて、301リダイレクトしますが、Node.jsの場合は、res.redirectで自動的に301を返すようになっています。今度は逆に、wwwありでアクセスがあった場合に、wwwを取ってリダイレクトする方法です。 wwwありでアクセスがあった時に、wwwを取ってリダイレクトさせる方法 coffee 1 2 3 4 5 6 7 8 app.get '/*', (req, res, next) -> # req.

続きを読む

あたしにゃ~そういう難しいことはわからないですがね(こん平風)、閲覧者に意図せず別のWebサイト上で掲示板への書き込みなどを行わせ、警察が誤認逮捕してしまった事件がありましたが、これがCSRF攻撃というから恐ろしいじゃないですか。Node.jsでもしっかり対策しなければなりませんが、Express version3.0以上で、少しはまったところがありましたのでメモします。 CSRFとは ググればいっぱい出てきます。CSRFをscrと打ち間違えそうになるほど自分はフロント側の人間なので、詳しいことは分かりませんが、下記のサイトが割りと分かりやすかったです。 リクエスト強要(CSRF)対策 http://www.ipa.go.jp/security/awareness/vendor/programmingv2/contents/301.html 単純に、Node.js express CSRFとかでググった先人様の知恵などでは、どうもexpressのバージョンが2とかの情報が多かったです。一番目にしたのは、「express-csrf」というモジュールです。これを使うと、下記のアラートが出てしまいます。 express-csrf is deprecated. Please use Connect’s csrf middleware instead express-csrfは推奨されません。代わりに、ConnectのCSRFミドルウェアを使用してください(直訳) express-csrfは非推奨 もうこのモジュールを使うのを推奨していないみたいでした。express verison3以降ではミドルフェアとして使えるみたいなので調べてみると、expressのconnectの中に、csrf.jsがちゃんとありました。あと、先人様の知恵情報では、dynamicHelpersを使う方法がありました。express version3以降では、このダイナミックヘルパーの使い方が変わりましたので、この辺りの使い方も変わってしまいました。いろんなサイトを探した結果、下記のサイトに使い方が載ってました。 Express 3 Tutorial: Contact Forms with CSRF http://dailyjs.com/2012/09/13/express-3-csrf-tutorial/ 要点をまとめると、 CSRF対策は専門の方から具体的な内容を聞いてください express-csrfは非推奨 参考サイトでdynamicHelperで書かれていたら、express version3以降ではコピペ出来ない チュートリアルが英語サイトだったので下記にまとめます js 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 app.

続きを読む

あたしにゃ~そういう難しいことはわからないですがね(こん平風)、共通鍵暗号方式というのは、とある文字列を暗号化してしまう為に使う鍵(パスワード)と、暗号化したものを元に戻す復号化に使う鍵が一緒、というのが、共通鍵暗号方式つーらしいんですわ。cryptというのは暗号化、復号化するためのプログラムのことで、直訳は「(ドーム型)地下室」という意味らしいですね。 ということで、今回はNode.jsのcryptを使って、データの暗号化と復号化の方法を簡単なサンプルを用いて紹介します。 暗号化 cryptはNode.js自体の機能なので、npm isntallする必要はなく、そのままrequireすれば使えます。 js 1 2 3 4 5 6 7 8 9 var crypto = require('crypto'); // 'password'のところが、共通鍵です。 var cipher = crypto.createCipher('aes-256-cbc', 'password'); var text = '共通鍵暗号方式' var crypted = cipher.update(text, 'utf-8', 'hex'); crypted += cipher.final('hex'); console.log(crypted); // 暗号化された文字列→1c0d50c3e73e352066353f8dd40a16af4f8160d8199f3858ec8a674b58b2e4fc 表示された文字は、ちゃんとごちゃごちゃした文字になったと思います。今度はこれを複合化します。 復号化 js 1 2 3 4 5 decipher = crypto.

続きを読む

Node.jsでObjectをconsole.logした時に、[Object, object] と出てしまう時があります。その中身がみたいですよね。PHPに例えるとのvar_dumpに相当する方法です。 js 1 2 3 4 5 // utilモジュールを使います。 var util = require('util'); // inspectで中身を見ることができます。 console.log(util.inspect(object)); とても簡単ですね! js 1 2 3 4 5 function dump(v){ return console.log(util.inspect(v)); } dump(object); こんな感じにメソッドを作っておいて、console.logの代わりに使ってしまうのもありですね。

続きを読む

前回の、 【Node.js】OAuth認証でPassportが最強に使いやすい の続きです。今回は準備から実際にコーディングのところまで説明します。 検証、制作環境など Mac OS 10.6 ターミナル.app node.js -v v0.8.4 express version 3.0.0rc3 jadeを使いたいと思います。 node-oauth node_modules localhost:3000で検証 さっそく準備をします。 # expressでnode-passportとう名前のディレクトリを作ります。 # 名前はなんでもいいですが、今回はそうします。 # -sでオプションでセッションをつけます。 $ express -s node-passport # node-passportに移動してnpm installします。 $ cd node-passport $ npm install # passport, passport-facebook, passport-twitterのmoduleをインストール。 $ npm install passport $ npm install passport-facebook $ npm install passport-twitter これで準備完了です。app.jsを開いて、コードを書き足していきます。 app.js 1 2 3 4 5

続きを読む

まず何が最強なのかは対応しているSNSがズラッと! Local (username and password) BrowserID OpenID OAuth (OAuth 1.0 and 2.0) SAML by Henri Bergius WS-Federation + SAML 2.0 by Auth10 WebID by Baptiste Lafontaine 37signals 500px by Jeremy Benaim AngelList AOL App.net by Michael Owens Bitbucket DailyCred by Hank Stoever Digg Dropbox Dwolla Evernote Facebook FamilySearch Fitbit Flattr by Johan Uhle Flickr by Johnny Halife Force.com (Salesforce, Database.com) by Joshua Birk Foursquare FreedomWorks by Carlos Rodriguez Geoloqi GitHub Goodreads Google (OpenID) Google (OAuth 1.

続きを読む

プロフィール画像

こたぽん

JavaScript, React, NextJS, VueJS, NuxtJS, AWS, Firebase, Git, ビールと生ハムが好き

Rakuten, Inc. CyberAgent, Inc.