エロサイトの作り方

2013年11月から勉強しながらエロサイトを作っています。

Node.js

Google APIのOAuth2認証でinvalid grantと出る件

現象 ソース google = require 'googleapis' CLIENT_ID = '...' CLIENT_SECRET = '...' oauth2Client = new google.auth.OAuth2 CLIENT_ID, CLIENT_SECRET, 'postmessage' if error console.log 'authorize error:', util.inspect(error) return ... ただ認…

Node.jsのrequestモジュールでProxyを使う方法

READMEにもやーっと書いてあるけど、えいごがむつかしくてよくわからなかった。 …ので、別途調べた。 ちなみにHTTPS Proxyは調べた過程で闇が見えたので試してない。 方法1: シェルの環境変数に従う http_proxy, HTTP_PROXY https_proxy, HTTPS_PROXY no_pro…

Node.JS ModulesのSSL証明書が切れて、いかがわしい感じになってる件

Node.jsのnpmモジュールを探すのに便利なNode.js ModulesのサイトのSSL証明書が切れているみたい。 このサイト、Node.jsのモジュールを探すのに結構便利なんだけど、何とかしてくれないかなぁ…… Chrome 検索用に文字起こし この接続ではプライバシーが保護さ…

流行のgeneratorをCoffeeScript + Gulpでビルドする

最近CoffeeScriptでもgenerator(yield)構文が使えるようになったらしいので、 CoffeeScript初心者のくせに試してハマった記録です。 インストール Node.js v0.11系を入れる $ nvm ls-remote | grep v0.11 ... v0.11.14 最新はv0.11.14。 $ nvm install v0.…

Underscore.jsのtemplateが1.7から仕様が変わってて死んだ件

なんで突然互換性が無くなる変更するのよ… 1.6.0まで _.template('this is a <%- name %>.', {name:'tits'}); this is a tits. 1.7.0 _.template('this is a <%- name %>.', {name:'tits'}); function (data) { return render.call(this, data, _); } なんか…

findでソースの行数を数える

そろそろ整理しないとなぁと思いつつずっとそのままだったので、とりあえず現状把握として行数を数えてみた。 $ find . -name "*.js" -o -name node_modules -prune -type f | xargs wc -l ... 20269 total 意外と書いてた…

MEAN Stack飽きてきた

クローラーと管理画面はMongoDB + Express + AngularJS + Node.jsの、いわゆるMEAN Stack構成なのですが、特にNode.jsに飽きたので別の言語にリプレースしようと思ってる。 Node.jsはなんか色々つらい。薄々気づいてたけど、この言語はまず使用目的ありきで…

Node.jsからElasticsearchに全文検索をかける

過去2回の悪戦苦闘から、ようやくNode.jsを使うところまできました。 elasticsearch-jsを入れる elasticsearch/elasticsearch-js · GitHub Official Elasticsearch client library for Node.js and the browser Elasticsearchのクライアントはやたらあるので…

MongoDB+Elasticsearchで全文検索をする(リトライ)

前回の続き。 kuromojiが動かないのはバージョンの組み合わせの問題? Elasticsearchは最新版(1.2.1)だから、kuromojiも最新版なら動くと思ったのだけど。 elasticsearch/elasticsearch-analysis-kuromoji · GitHub In order to install the plugin, simpl…

Node.jsでスクレイピングをする際にcheerioはお勧めできない

cheerio こんなのを <head> <meta charset="UTF-8"> <title>つらぽよ(>_<)...</title> <script> <!-- console.log('(;_;)'); // --> </script> </head> <body> こんにちは(^^)/ </body> </html> こうすると var fs = require('fs'); var cheerio = require('cheerio'); var html = fs.readFileSync('test.html', 'utf8'); var …

Node.jsでGETリクエストを投げる時に最低限必要な処理

つらつら書いてみたら長い長い。 誰もが引っかかる罠、 HTTPリクエストに対するレスポンスがなければerrorオブジェクトに中身が入る errorとなった場合にはresponseオブジェクトはundefined UTF-8以外のコンテンツは明示的に変換しないと文字化けする あたり…

JadeでHTMLコメントに変数の値を展開する方法

ダメな例 // generated: #{generated} 普通はコメント構文を使うだろうと思うんだけど、これだとうまく展開されない。 このように、まんま出力されてしまう。 こう書く | パイプ構文を使ってコメントタグから直書きする。 これだと期待通りに出力される。

Node.jsのテンプレートエンジンECTでループカウントを取得する方法

公式サイトどころかググっても言及されて無くてできないのかと思いきや、カンマで区切ったら取得できました。 <ul> <% for entry, index in @entries : %> <li><%- index+1 %>. <%- entry.title %></li> <% end %> </ul> <ul> <li>1. ひとつめ</li> <li>2. ふたつめ</li> </ul>

JavaScriptのDateのパースはブラウザによって違う

'Y/M/D'想定の所に'M/D'形式のデータが入ってきてハマった問題。 Chrome 35.0.1916.114 > new Date('6/4') Mon Jun 04 2001 00:00:00 GMT+0900 (JST) Safari 7.0.4 > new Date('6/4') Invalid Date Firefox 29.0.1 > new Date('6/4') Invalid Date Node.js v…

HomebrewでNode.js v0.10.24へのアップデートに失敗する

Snow Leopard環境での話なので、OSが古いからだと思うのですが。 バージョン $ sw_vers ProductName: Mac OS X ProductVersion: 10.6.8 BuildVersion: 10K549 brew upgradeに失敗する $ brew upgrade ==> Upgrading 1 outdated package, with result: node 0…

Node.jsでkillシグナルに対応したり、処理のタイムアウトを行ったりする

killシグナルへの対応 kill {pid}コマンドなどでSIGTERMが飛んで来た場合、 process.on('SIGTERM')でキャッチできるようです。 この通知の中でprocess.exit()すればプログラムが終了し、しなければ無視することができます。 ただしkill -9 {pid}などでSIGKIL…

Node.jsでSSHポート転送を使ってリモートのMongoDBに接続する方法

たまに手元のコードでサーバーのDBを使いたいことがあるのだけど、そのためにサーバーのポートを開けるのはちょっと…と思うので、SSHのポート転送を使って接続する方法を実装してみました。 といっても、SSHコマンド呼んでいるだけですが。 ソース 'use stri…

Node.jsで画像比較が行えるようになるnode-phashを使ってみる

node-libpuzzleの検証に続き、画像比較ライブラリの検証です。 まず、pHashとはなんぞ? Hashというのは同じデーターには同じ値/違うデータには違う値、 という分類をデータサイズを抑えた形で一意に表す仕組みなのですが、 pHashはさらにHash同士を比較し…

Node.jsでファイルのHash値を取得する

標準ライブラリのcryptを使う。 ソース var crypto = require('crypto'); var fs = require('fs'); var data = fs.readFileSync('test.jpg'); var algo = ['md5', 'sha1', 'sha256', 'sha512']; for (var i=0; i

Node.jsのnpmコマンドの使い方

基本的な使い方 ヘルプ $ npm -l サブコマンド一覧とオプションの使い方を教えてくれます。 パッケージの検索 $ npm search {キーワード} しかし、このコマンドで探す人はあまりいないのではないだろうか。 サイトから探した方が早いと思う。 Node Packaged …

Node.jsでsudo付けずにnpm update -gしたらnpmコマンドが消えた

表題の通りなのですが、 $ npm update -g ... npm ERR! error rolling back Error: EACCES, unlink '/usr/local/lib/node_modules/npm/doc/api' npm ERR! error rolling back npm@1.3.17 { [Error: EACCES, unlink '/usr/local/lib/node_modules/npm/doc/api…

Node.jsで画像比較を行えるようになるnode-puzzleを使ってみる

PHP界隈では有名らしい、libpuzzleという画像比較ライブラリのNode.js用ネイティブAPIがあったので試してみました。 依存ライブラリを先に入れる $ brew install libgd libpuzzle node-puzzleを入れる $ npm install puzzle clang: error: no such file or d…

Node.jsでCanvasが使えるようになるnode-canvasを入れる

Node.jsで画像を加工したくなったのでライブラリを探したところ、サーバーサイドでCanvasを使えるようにするnode-canvasというライブラリが良さそうだったので入れてみました。 依存ライブラリでCairoが必要らしいので先に入れる $ brew install cairo node-…

Node.jsのimagamagick-nativeを使ってみる

いつもchild_process.exec経由でImageMagickを呼び出していたのだけど、imagemagick-nativeというNode.js用のネイティブAPIがあるようなので試してみました。 yumでImageMagickを入れる Macなら $ brew install imagemagick CentOSなら $ sudo yum install I…