先人の知恵を借りるべく、ググッたりして調べましたが、なかなかできずに試行錯誤した結果、なんとかmigrateができたんでメモしておきます。 作業環境 Node.js v0.10.26 PostgreSQL Sequelize [CLI: v0.2.4, ORM: v1.7.9] もろもろインストール Node.jsはインストールしている前提に話を進めますね。 PostgreSQLをインストール 自分はbrewで入れました。 command 1 $ brew install postgresql パスを通しておきます command 1 export PGDATA=/usr/local/var/postgres node-postgresをインストール アプリとグローバル両方インストールします。ちなみにnpm install は npm i で略せます(^ ^) command 1 2 $ npm install pg -S $ npm i pg -g sequelizeをインストール command 1

続きを読む

対処法ってことじゃないですが、メモです。pgはnode-postgresのことで、postgresはpostgresSQLのことでデータベースのことです。 Sequelizeを使ってみようと思い、 ドキュメントのセットアップ通りに進めてたら、npm install –save sequelize pg mysql のところでコケました。 command 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 $ npm install --save sequelize pg mysql ...(ry > pg@3.4.0 install /Users/home/Dropbox/tk-box/server/node_modules/pg > node-gyp rebuild || (exit 0) /bin/sh: pg_config: command not found gyp: Call to 'pg_config --libdir' returned exit status 127. gyp ERR! configure error gyp ERR!

続きを読む

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

続きを読む

grunt自体がNode.jsで動いてるんでややこしいですが、Node.jsでアプリケーションを開発している時、foreverとかnode-devを使って、更新ファイルがあれば再起動してブラウザをリロードして確認すると思います。gruntがあるならサーバーの再起動もブラウザのオートリロードもできるやろ!と思って作りました。 Qiitaにも投稿しました。 はじめに Node.jsをExpressで作る際に、app.js, routes, jade, stylus, publicの中にあるファイルなどを更新した際に、serverがrestartしてブラウザもreloadされる。ようなGruntfileを作りました。まぁまぁ開発が早くなるんちゃうかと思います。 環境 Node.js v0.10.26 Express v3.0.0 node-supervisor テンプレートはJadeを使ってます。 CSSは、stylusからCSSを書き出してます。その際に、ベンダープレフィックスを追加するautoprefixerが動いてます。 JavaScriptファイルは全てcoffeeで書きます。 vendorsフォルダーは、distにコピーしているだけです。 Nodeプロセス node-supervisorを使って起動しますので、npm install -g node-supervisor してください。 ファイル構成 . ├── Gruntfile.coffee ├── app │ ├── app.coffee │ ├── bin │ │ └── www │ ├── public │ │ ├── images │ │ ├── javascripts │ │ └── stylesheets │ ├── routes │ │ ├── index.coffee │ │ └── user.coffee │ └── views │ ├── error.

続きを読む

投稿が半年も抜けちゃいました・・・。いかんですね。皆さまお元気でしたでしょうか? サイトのドメインを決める際に「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.

続きを読む

プロフィール画像

こたぽん

ビールと生ハムが好き

フロントエンドエンジニア

Tokyo